2016-11-21 5 views
1

ドッカーの作成ファイルを使用してウェブアプリケーションを構築しています。私はWebサーバー、PHP、その他の必要な拡張機能とパッケージを持っています。 Webアプリケーション用のDockerファイルは、パブリックベースイメージを継承し、カスタムコマンドで拡張します。別のコンテナには私はmysqlサーバを持っています。今私は最初のビルド中に私のアプリは実際にはライブデータベース接続が必要ですが、Webコンテナは常に最初に実行され、データベースはまだ当然失敗につながる起動されていない問題に直面しています。 depends_onを追加しようとしましたが、これは開始順序にのみ影響し、ビルドには影響しません。ドッカーの作成 - アプリケーションの前にデータベースを構築する

この問題を解決するロッカーやその他の拡張機能について聞いたことがありますが、これをネイティブに行う方法はありますか?私が研究できる限り、人々がそれをたくさん要求するので意味をなさない実行可能な選択肢はないことがわかります。

+2

これを行うより良い方法は、相互に依存しないようにすることです。 Webアプリケーションは、データベースが起動して実行されるまで、Webアプリケーションの良いフォールバックを持つ必要があります。 xxxmsをチェックしてまだ準備ができているかどうかを調べることができます。あなたが尋ねた質問とは違うので、私はこれを答えにしませんでした。 –

答えて

1

あなたのオプションであるかどうかはわかりませんが、カスタムスクリプトを作成できます。

2つのドッカー作成ファイルがあるとします。あなたのWebアプリケーションのための

  • 秒1 MySQLデータベース構築のための

    • 一つ

    まずできた2枚のMySQLの画像

    • 一つの意志ランチとランチmysqlデータベースドッキングウィンドウ、コンファイルあなたのデータベース
    • 2番目のスクリプトは、mysqlデータベースの準備ができるまでスクリプトを起動します。両容器の後

    は、あなたのWebアプリケーションとのドッキングウィンドウ-構成し、あなたがは、データベースが起動しを実行していることが保証されます起動を開始することができます開始終了します。

    このアプローチでは、カスタムスクリプトを処理する必要がありますが、非常に役に立ちます。

  • +0

    答えをありがとう、これは行く1つの方法です。私のユースケースでは、おそらく、ymlファイルのコマンドオプションを使って、実際にすべてを気にするカスタムbashスクリプトを書く方が良いでしょう。私は試していないが、私の推測では、ドッカーの作成はdepends_onオプションを検討し、これがうまくいくということです。 – tslid

    2

    ドッカーの文書に従って、depends_onはWebを起動する前にdbが「準備完了」状態になるのを待たずに、サービスが準備されるのを待つ必要がある場合は、こちらの文書に従ってください。 https://docs.docker.com/compose/startup-order/

    +0

    正確です。私はhttps://github.com/vishnubob/wait-for-itを使って、他のアプリケーションを起動する前にデータベースが利用可能になるのを待っています。 – nwinkler

    +0

    答えをくれてありがとう、私が以下に述べたように、私はコマンドオプションをdepends_onと一緒に試してみるかもしれない。カスタムbashスクリプトが正しい方法でやってしまうかもしれない。 – tslid

    関連する問題