En julio de 2019, documentación oficial de Docker:
Fuente:https://docs.docker.com/compose/compose-file/ #enlaces
Solución #1:archivo de entorno antes de comenzar
Básicamente centralizamos todas las configuraciones en un archivo con variables de entorno y ejecútelo antes de docker-compose up
El siguiente enfoque me ayudó en estos escenarios:
- Su docker-compose.yml tiene varios contenedores con dependencias complejas entre ellos
- Algunos de sus servicios en su docker-compose necesitan conectarse a otro proceso en la misma máquina. Este proceso podría ser un contenedor docker o no.
- Debe compartir variables entre varios archivos docker-compose como host, contraseñas, etc.
Pasos
1.- Cree un archivo para centralizar configuraciones
Este archivo podría llamarse:/env/company_environments con extensión o no.
export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export MY_TOKEN=123456
2.- Usa las variables env en tu docker-compose.yml
contenedor A
app_who_needs_mongo:
environment:
- MONGO_HOST=$MACHINE_HOST
- MONGO_PASSWORD=$MONGO_PASSWORD
- TOKEN=$MY_TOKEN
- LOG_PATH=$GLOBAL_LOG_PATH/app1
contenedor B
app_who_needs_another_db_in_same_host:
environment:
- POSTGRESS_HOST=$MACHINE_HOST
- LOG_PATH=$GLOBAL_LOG_PATH/app1
3.- Ponga en marcha sus contenedores
Simplemente agregue la fuente antes de los comandos docker-compose:
source /env/company_environments
docker-compose up -d
Solución #2:host.docker.internal
https://stackoverflow.com/a/63207679/3957754
Básicamente, use una característica de la ventana acoplable en la que host.docker.internal podría usarse como la ip del servidor en el que su docker-compose ha iniciado varios contenedores