2019年7月、Dockerの公式ドキュメント:
出典: https://docs.docker.com/compose/compose-file/ #links
解決策#1:開始前の環境ファイル
基本的に、すべての構成を環境変数を使用してファイルに一元化します。 docker-compose upの前に実行します
次のアプローチは、これらのシナリオで私を助けました:
- docker-compose.ymlには、複雑な依存関係を持つ複数のコンテナーがあります
- docker-composeの一部のサービスは、同じマシンの別のプロセスに接続する必要があります。このプロセスは、Dockerコンテナである場合とそうでない場合があります。
- ホスト、パスワードなど、複数のdocker-composeファイル間で変数を共有する必要があります
手順
1.- 1つのファイルを作成して構成を一元化します
このファイルには、 / env / company_environmentsという名前を付けることができます。 拡張子があるかどうか。
export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export MY_TOKEN=123456
2.- docker-compose.yml
でenv変数を使用しますコンテナA
app_who_needs_mongo:
environment:
- MONGO_HOST=$MACHINE_HOST
- MONGO_PASSWORD=$MONGO_PASSWORD
- TOKEN=$MY_TOKEN
- LOG_PATH=$GLOBAL_LOG_PATH/app1
コンテナB
app_who_needs_another_db_in_same_host:
environment:
- POSTGRESS_HOST=$MACHINE_HOST
- LOG_PATH=$GLOBAL_LOG_PATH/app1
3.- コンテナを起動します
docker-composeコマンドの前にソースを追加するだけです:
source /env/company_environments
docker-compose up -d
ソリューション#2:host.docker.internal
https://stackoverflow.com/a/63207679/3957754
基本的に、 host.docker.internalが含まれるDockerの機能を使用します。 docker-composeが複数のコンテナーを開始したサーバーのIPとして使用できます