2つのDockerコンテナーがあります
今、私のローカルWeb APIはローカルホストであり、コンソールアプリケーションはAPIを呼び出すのに問題ありませんが、これら2つがDocker化されたときはわかりません。
私はAPIの引数としてAPIのURLを渡しているのでDockerized API's
URLにDockerized Console
がアクセスできることを確認するだけなので、Docker Composeは必要ないと思います
何か案は?
作成機能を使用すると、問題を簡単に解決できます。作成では、1つの構成ファイル(docker-compose.yml
) このような :
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
実行するには、次のようにup
を呼び出します。
docker-compose up
これはすべてのスタックを実行する最良の方法なので、このリファレンスを確認してください: https://docs.docker.com/compose/
成功!
docker run
でlink
オプションを使用できます:
APIを実行します。
docker run -d --name api api_image
クライアントを実行します。
docker run --link api busybox ping api
api
はdockerで解決できるはずです。
とはいえ、docker-compose
を使用する方がより良いオプションです。
アイデアは、URLを渡すのではなく、呼び出す他のコンテナのホスト名です。
参照 Composeのネットワーキング
デフォルトでは、Composeはアプリに単一のネットワークを設定します。サービスの各コンテナーは、デフォルトネットワークに参加し、そのネットワーク上の他のコンテナーから到達可能であり、コンテナー名と同じホスト名でそれらによって検出可能です。
コンテナーが単一のDockerサーバーノードで実行されていない場合、 Docker Swarm Mode を使用すると、複数のノードでその検出が可能になります。