这是我的docker-compose.yml
yml
version: '2'
services:
admin_db:
build:
context: .
dockerfile: postgres.dockerfile
args:
- DB_NAME=admin_db
- DB_USER=admin
- DB_PASSWORD=admin_pass
network_mode: "default"
admin:
build:
context: .
dockerfile: admin.dockerfile
args:
- UID=$UID
- GID=$GID
- UNAME=$UNAME
command: /bin/bash
depends_on:
- admin_db
ports:
- "8000:8000"
links:
- admin_db
network_mode: "bridge"
如果使用networking_mode:“bridge”,我应该能够从{@ 1}}从localhost访问我的应用程序(admin),但是目前,我只能在http://127.0.0.1:8000/
从localhost访问它。
当networking_mode是“host”时,我能够random-ip:8000
访问,但是我无法链接容器。
有两种解决办法吗?
- 链接容器
- 从localhost
答案 0 :(得分:0)
如果由于某些未知原因,正常链接不起作用,您可以始终创建另一个桥接网络并直接连接到该docker镜像。通过这样做,运行图像的IP地址将始终相同。
我会像这样编辑:
version: '2'
services:
admin_db:
build:
context: .
dockerfile: postgres.dockerfile
args:
- DB_NAME=admin_db
- DB_USER=admin
- DB_PASSWORD=admin_pass
networks:
back_net:
ipv4_address: 11.0.0.2
admin:
build:
context: .
dockerfile: admin.dockerfile
args:
- UID=$UID
- GID=$GID
- UNAME=$UNAME
command: /bin/bash
depends_on:
- admin_db
ports:
- "8000:8000"
extra_hosts:
- "admin_db:11.0.0.2"
networks:
back_net:
ipv4_address: 11.0.0.3
networks:
back_net:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
com.docker.network.bridge.name: "back"
ipam:
driver: default
config:
- subnet: 11.0.0.0/24
gateway: 11.0.0.1
希望有所帮助。