Vào tháng 7 năm 2019, tài liệu chính thức về docker:
Nguồn: https://docs.docker.com/compose/compose-file/ # liên kết
Giải pháp # 1:tệp môi trường trước khi bắt đầu
Về cơ bản, Chúng tôi tập trung tất cả các cấu hình trong một tệp với biến môi trường và thực thi nó trước khi docker-soạn lên
Cách tiếp cận sau đây đã giúp tôi trong những trường hợp sau:
- Docker-compos.yml của bạn có một số vùng chứa với sự phụ thuộc phức tạp giữa chúng
- Một số dịch vụ của bạn trong trình soạn thảo-docker cần kết nối với một quy trình khác trong cùng một máy. Quá trình này có thể là một vùng chứa docker hoặc không.
- Bạn cần chia sẻ các biến giữa một số tệp do docker soạn thảo như máy chủ lưu trữ, mật khẩu, v.v.
Các bước
1.- Tạo một tệp để tập trung các cấu hình
Tệp này có thể được đặt tên: / env / company_enosystem có phần mở rộng hay không.
export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export MY_TOKEN=123456
2.- Sử dụng các biến env trong docker-compos.yml
của bạnvùng chứa A
app_who_needs_mongo:
environment:
- MONGO_HOST=$MACHINE_HOST
- MONGO_PASSWORD=$MONGO_PASSWORD
- TOKEN=$MY_TOKEN
- LOG_PATH=$GLOBAL_LOG_PATH/app1
vùng chứa B
app_who_needs_another_db_in_same_host:
environment:
- POSTGRESS_HOST=$MACHINE_HOST
- LOG_PATH=$GLOBAL_LOG_PATH/app1
3.- Khởi động vùng chứa của bạn
Chỉ cần thêm nguồn trước các lệnh docker-soạn:
source /env/company_environments
docker-compose up -d
Giải pháp # 2:host.docker.internal
https://stackoverflow.com/a/63207679/3957754
Về cơ bản sử dụng một tính năng của docker trong đó host.docker.internal có thể được sử dụng làm ip của máy chủ trong đó docker-comp của bạn đã khởi động một số vùng chứa