私は他のアプリケーションを起動する前にデータベースが起動しているかどうかを確認するためにwait-for-itスクリプトを使用しています。succesfull wait-for-itスクリプトの後にドッカーコンテナを起動する方法
#!/bin/bash
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
私は、このスクリプトhereを見つけました。 私のapp-containerは、MySQL is up - executing command
で実行を停止します。 スクリプトは成功しました(dbは実行中ですが)私のアプリケーションのドッカーファイルにある実際のCMD(スクリプトの後ろ)を実行する方法は私には分かりません。
これが私のdockerfileの終わりです:
COPY docker-entrypoint.sh /entrypoint.sh
COPY ./wait-for-it.sh wait-for-it.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 2368
CMD ["npm", "start"]
'ENTRYPOINT'を削除し、両方を' CMD'に置くことができます: 'CMD /entrypoint.sh && npm start'。 –
こんにちは、私はあなたが言ったが、それはまだ正常なpsqlのチェックの後でCMDのコマンドを実行することができないようだ。画像はビルドされ、ドッカーの作成はwait-for-itスクリプトを実行します。それは成功しているので、コンテナを起動できますが、間違っています。何も起こらない – DenCowboy
私はwait-for-itスクリプトに引数が必要だと思います。 '/entrypoint.sh localhost npm start'を試してみてください。申し訳ありませんが、私はLinuxボックスを持っていないので、今はテストできません。返信いただきありがとうございます。 –