A luglio 2019, documentazione docker ufficiale :
Fonte:https://docs.docker.com/compose/compose-file/ #link
Soluzione n. 1:file di ambiente prima dell'avvio
Fondamentalmente centralizziamo tutte le configurazioni in un file con variabili di ambiente ed eseguilo prima di comporre mobile
Il seguente approccio mi ha aiutato in questi scenari:
- Il tuo docker-compose.yml ha diversi contenitori con complesse dipendenze tra loro
- Alcuni dei tuoi servizi nella tua composizione mobile devono connettersi a un altro processo nella stessa macchina. Questo processo potrebbe essere un contenitore mobile o meno.
- Devi condividere variabili tra diversi file di composizione Docker come host, password, ecc.
Passaggi
1.- Crea un file per centralizzare le configurazioni
Questo file potrebbe essere denominato:/env/company_environments con estensione o meno.
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 le variabili env nel tuo docker-compose.yml
contenitore A
app_who_needs_mongo:
environment:
- MONGO_HOST=$MACHINE_HOST
- MONGO_PASSWORD=$MONGO_PASSWORD
- TOKEN=$MY_TOKEN
- LOG_PATH=$GLOBAL_LOG_PATH/app1
contenitore B
app_who_needs_another_db_in_same_host:
environment:
- POSTGRESS_HOST=$MACHINE_HOST
- LOG_PATH=$GLOBAL_LOG_PATH/app1
3.- Avvia i tuoi container
Basta aggiungere la sorgente prima dei comandi di composizione mobile:
source /env/company_environments
docker-compose up -d
Soluzione n. 2:host.docker.internal
https://stackoverflow.com/a/63207679/3957754
Fondamentalmente usa una funzione della finestra mobile in cui host.docker.internal potrebbe essere utilizzato come ip del server in cui la tua composizione mobile ha avviato diversi contenitori