2017-05-24 6 views

答えて

2

「ドッカーのやり方」をすることは、ドッカー/ドッカーの作文には何も組み込まれていないため、すべてを自分の独立したマイクロサービスとして扱うべきです。 Composeは常に依存関係を順番に開始しますが、開始が完了するのを待たずに、Webサーバーを起動する前にデータベースサーバーが起動するのを待つようなことはできません。

ここで利用できる、このトピックに関する豊富な情報をあります

:依存関係のコンテナが

wait-for-itはあなたを可能にするネットワークサービスである場合

:私は、以下の簡単な要約を提供してきましたhttps://docs.docker.com/compose/startup-order/

コマンドを実行する前にポートがアクセス可能になるまで待つ(例:https://docs.docker.com/compose/startup-order/

version: "2" 
services: 
    web: 
    build: . 
    ports: 
     - "80:8000" 
    depends_on: 
     - "db" 
    command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"] 
    db: 
    image: postgres 

それは「完成」のネットワークサービスまたはない場合は、条件はまた、あなたがサービスは、現在のコンテナサービスを開始する前に利用可能である確認ラッパースクリプトを実装する必要がありますちょうど

accessbileているポートよりも複雑です(https://docs.docker.com/compose/startup-order/から取得)

#!/bin/bash 
# wait-for-postgres.sh 

set -e 

host="$1" 
shift 
cmd="[email protected]" 

until psql -h "$host" -U "postgres" -c '\l'; do 
    >&2 echo "Postgres is unavailable - sleeping" 
    sleep 1 
done 

>&2 echo "Postgres is up - executing command" 
exec $cmd 
関連する問題