I juli 2019, officiell hamnardokumentation:
Källa:https://docs.docker.com/compose/compose-file/ #länkar
Lösning #1:miljöfil före start
I grund och botten centraliserar vi alla konfigurationer i en fil med miljövariabler och kör det innan docker-compose up
Följande tillvägagångssätt hjälpte mig i dessa scenarier:
- Din docker-compose.yml har flera behållare med komplexa beroenden mellan dem
- Vissa av dina tjänster i din docker-compose måste anslutas till en annan process på samma dator. Denna process kan vara en dockningsbehållare eller inte.
- Du måste dela variabler mellan flera docker-compose-filer som värd, lösenord, etc.
Steg
1.- Skapa en fil för att centralisera konfigurationer
Den här filen kan heta:/env/company_environments med förlängning eller inte.
export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export MY_TOKEN=123456
2.- Använd env-variablerna i din docker-compose.yml
behållare A
app_who_needs_mongo:
environment:
- MONGO_HOST=$MACHINE_HOST
- MONGO_PASSWORD=$MONGO_PASSWORD
- TOKEN=$MY_TOKEN
- LOG_PATH=$GLOBAL_LOG_PATH/app1
behållare B
app_who_needs_another_db_in_same_host:
environment:
- POSTGRESS_HOST=$MACHINE_HOST
- LOG_PATH=$GLOBAL_LOG_PATH/app1
3.- Starta dina containrar
Lägg bara till källkod innan docker-compose-kommandon:
source /env/company_environments
docker-compose up -d
Lösning #2:host.docker.internal
https://stackoverflow.com/a/63207679/3957754
Använd i princip en funktion i docker där host.docker.internal kan användas som ip för servern där din docker-compose har startat flera behållare