[解決済み] dockerコンテナの起動を待つにはどうしたらよいですか?
質問
コンテナ内でサービスを実行するとき、例えばmongodbとすると、コマンドは
docker run -d myimage
は即座に終了し、コンテナIDを返します。
CIスクリプトでは、mongoコンテナを実行した直後にmongodbの接続をテストするためのクライアントを実行します。
問題は、サービスがまだ立ち上がっていないため、クライアントが接続できないことです。
大きな
sleep 10
を追加する以外に、コンテナが起動して実行されるのを待つためのオプションは見当たりません。
Dockerにはコマンド
wait
というコマンドがありますが、この場合、コンテナが存在しないので動作しません。
dockerの制限なのでしょうか?
どうすれば解決するのでしょうか?
でコメントされているように 類似の問題 を参照してください。
HEALTHCHECK
のサポートは上流にマージされ、以下のように docker/docker#23218 - これは、次のコンテナを開始する前に、コンテナが健全であるかどうかを判断するために考慮することができます。
これは、以下のように利用できます。 ドッカー 1.12rc3 (2016-07-14)
docker-compose
は処理中です
で、特定の条件を待つ機能をサポート中です。
これは
libcompose
を使用し (そのため docker インタラクションを再構築する必要がありません)、このために多くの設定コマンドを追加しています。ここでチェックしてみてください。 https://github.com/dansteen/controlled-compose
このようにDockerfileで使用することができます。
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1
公式のドキュメントです。 https://docs.docker.com/engine/reference/builder/#/healthcheck
関連
-
[解決済み】エラー "入力デバイスはTTYではありません"
-
[解決済み] MongoDB - 管理者ユーザが認証されていない
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】Dockerコンテナのディスク使用量を分析する方法
-
[解決済み] MongoDBの$unwind演算子って何?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] MongoDB Compass: select distinct フィールド値
-
[解決済み] MongoDBのデフォルトのユーザーとパスワードは何ですか?
-
[解決済み] mongodの書き込みに関するデフォルトの懸念はどのバージョンにありますか?
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
CentOS7に新規インストールしたMongodbの初期設定
-
[解決済み】Docker ComposeはYを起動する前にコンテナXを待ちます。
-
[解決済み】Node.jsでMongooseを使用してページングする方法は?
-
[解決済み】RedisはmongoDBよりどれくらい速いのか?
-
[解決済み] MongoDBでObjectIDの代わりにUUIDを使用する方法