はじめに 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は特定のポートに対して、アクセスが可能であるか否かを判断する
![docker-composeでデプロイする際に、RailsがDBプロセスの起動を待つようにする | 毒男日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/f5d707c22fa1ef71701d0e5c76cadf81e125e039/height=288;version=1;width=512/https%3A%2F%2Fdokuo.net%2Fwp-content%2Fthemes%2Fluxech%2Fimages%2Fog.png)