DATABASE_URL 127.0.0.1を指します 、これはループバックアダプタです(詳細はこちら)。これは「自分自身につながる」という意味です。
同じホストで両方のアプリケーションを(Dockerを使用せずに)実行すると、両方とも同じアダプター(localhostとも呼ばれます)でアドレス指定できます。 。
コンテナで両方のアプリケーションを実行する場合、以前のように両方がローカルホスト上にあるわけではありません。代わりに、webをポイントする必要があります dbへのコンテナ docker0上のコンテナのIPアドレス アダプター-docker-compose あなたのためのセット。
変更:
127.0.0.1 CONTAINER_NAMEへ (例:db )
例:
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
に
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
これはDockerリンクのおかげで機能します:web コンテナにはファイルがあります(/etc/hosts )dbを使用 dbが指定するIPを指すエントリ コンテナがオンになっています。これは、ホスト名を解決しようとしたときにシステム(この場合はコンテナー)が最初に確認する場所です。