我的 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
我认为您没有正确使用环境变量。请参考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
and web
会在127.0.0.4
EDIT:如果你想访问名为api
从 Web 容器内部,您可以使用我们在此处分配的 IP 地址。http://127.0.0.3:80/或者你也可以使用http://api:80/
The api
使用它来代替 IP 地址,因为它是服务名称,并且当未给出主机名时,服务名称将被视为默认主机名。如果您想了解主机名,请参阅this问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)