我的docker-compose有两个服务, 和docker-compose.yml使用容器名称
定义环境变量ip地址 version: '2'
services:
api:
build: ./api/
command: python3 manage.py runserver
volumes:
- ./api:/code
ports:
- "8000:80"
networks:
- dock_net
container_name: con_api
web:
build: ./web/
command: python3 manage.py runserver
volumes:
- ./web:/code
ports:
- "8001:80"
networks:
- dock_net
container_name: con_web
environment:
Ip:con_ip
networks:
dock_net:
driver: bridge
但变量见" con_ip"不是127.0.0.3
答案 0 :(得分:6)
我认为您没有正确使用环境变量。请参阅environment variables in compose。
只需使用该容器的服务名称即可从其他容器访问一个容器。这是推荐的方式。
但是如果您因为自己的原因而喜欢IP地址,我告诉您如何设置容器的静态IP地址,我不会推荐它。
version: '2'
services:
api:
build: ./api/
command: python3 manage.py runserver
volumes:
- ./api:/code
ports:
- "8000:80"
networks:
- dock_net:
ipv4_address: 127.0.0.3
container_name: con_api
web:
build: ./web/
command: python3 manage.py runserver
volumes:
- ./web:/code
ports:
- "8001:80"
networks:
- dock_net:
ipv4_address: 127.0.0.4
container_name: con_web
networks:
dock_net:
driver: bridge
ipam:
config:
- subnet: 127.0.0.0/8
gateway: 127.0.0.1
这将为您的容器分配所需的IP地址。 API
位于127.0.0.3
,web
位于127.0.0.4
编辑:如果您想从Web容器内部访问名为api
的服务,那么您可以使用我们在此处分配的IP地址。 http://127.0.0.3:80/或您也可以使用http://api:80/
api
用于代替IP地址,因为它是服务名称,当没有给出主机名时,服务名称被视为默认主机名。如果您想了解主机名,请参阅this问题。