はじめに docker-composeでアプリをデプロイする際、pumaにせよunicornにせよ、Railsのアプリが立ち上がる前にデータベースが起動している必要があります。これはデータベースのコンテナが起動しているという意味ではなく、データベースのプロセスが立ち上がり、ポートが外部に向けて開放されており、他所から利用が可能になっている必要がある、ということでございます。 これを確認するための機構がdocker-composeにはありません。 実装 そこでwait-for-itと呼ばれるスクリプトを利用します。 これをdocker-compseのcommandから呼び出します。 docker-compose run web bin/wait_for_it db:3306 -- rake db:create wait-for-itは特定のポートに対して、アクセスが可能であるか否かを判断する