V červenci 2019 oficiální dokumentace dockeru:
Zdroj:https://docs.docker.com/compose/compose-file/ #odkazy
Řešení č. 1:soubor prostředí před spuštěním
V podstatě všechny konfigurace centralizujeme do souboru s proměnnými prostředí a spusťte jej před docker-compose up
V těchto scénářích mi pomohl následující přístup:
- Váš docker-compose.yml má několik kontejnerů se složitými závislostmi mezi nimi
- Některé z vašich služeb ve vašem docker-compose se potřebují připojit k jinému procesu na stejném počítači. Tento proces může být kontejner dockeru nebo ne.
- Musíte sdílet proměnné mezi několika soubory vytvořenými pomocí dockeru, jako je hostitel, hesla atd.
Kroky
1.- Vytvořte jeden soubor pro centralizaci konfigurací
Tento soubor může mít název:/env/company_environments s příponou nebo bez.
export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export MY_TOKEN=123456
2.- Použijte proměnné env v docker-compose.yml
kontejner A
app_who_needs_mongo:
environment:
- MONGO_HOST=$MACHINE_HOST
- MONGO_PASSWORD=$MONGO_PASSWORD
- TOKEN=$MY_TOKEN
- LOG_PATH=$GLOBAL_LOG_PATH/app1
kontejner B
app_who_needs_another_db_in_same_host:
environment:
- POSTGRESS_HOST=$MACHINE_HOST
- LOG_PATH=$GLOBAL_LOG_PATH/app1
3.- Spusťte své kontejnery
Stačí přidat zdroj před příkazy docker-compose:
source /env/company_environments
docker-compose up -d
Řešení č. 2:host.docker.internal
https://stackoverflow.com/a/63207679/3957754
V zásadě použijte funkci dockeru, ve které host.docker.internal lze použít jako ip serveru, na kterém váš docker-compose spustil několik kontejnerů