ユーザー定義のブリッジネットワーキングを利用するだけです。まず、Dockerのさまざまなタイプのネットワークの簡単な説明を読んで知識を活用します:https://docs.docker.com/network/bridge/
次に、独自のネットワークを定義します
docker network create foo
次に、接続されたコンテナを実行します このネットワークへ:
docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...
両方のコマンドで--network foo
に注意してください 。また、必要ありません この場合、ポートを公開するには、ユーザー定義のネットワーク内で自動的に実行されます:
同じユーザー定義のブリッジネットワークに接続されたコンテナは、すべてのポートを相互に自動的に公開し、外部へのポートは公開しません。これにより、コンテナ化されたアプリケーションは、誤って外の世界へのアクセスを開くことなく、相互に簡単に通信できます。
第三に、--name bar
を使用して、コンテナに人間が読める形式のホスト名を付けます。
docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...
そして最後に接続文字列を修正します-localhost
から変更します my-postgres
のようなコンテナ名に :
...
POSTGRES_HOST=my-postgres
...