我在 VM 实例中有一个 cookiecutter django 项目,一个最小的。让我们调用VM_D。这是我正在尝试运行的 production.yml:
version: '2'
volumes:
caddy: {}
services:
django: &django
build:
context: .
dockerfile: ./compose/production/django/Dockerfile
depends_on:
- redis
env_file: .env
command: /gunicorn.sh
caddy:
build:
context: .
dockerfile: ./compose/production/caddy/Dockerfile
depends_on:
- django
volumes:
- caddy:/root/.caddy
env_file: .env
ports:
- "0.0.0.0:80:80"
- "0.0.0.0:443:443"
redis:
image: redis:3.0
celeryworker:
<<: *django
depends_on:
- redis
command: /start-celeryworker.sh
celerybeat:
<<: *django
depends_on:
- redis
command: /start-celerybeat.sh
此外,我还有另一个运行 postgres 的 VM 实例,但不在 docker 内。我们称之为VM_P。
这两个 VM 相互连接(我可以相互 ping 它们,甚至可以从 VM_D 远程使用 psql),而 postgres 不能访问 Internet(出于安全原因)。所以基本上,VM_D 有两张卡(en0 用于外部访问互联网,en1 用于连接 VM_P),而 VM_P 只有一张卡(用于连接 VM_D)。
我希望能够从 django 容器访问 VM_P。我知道我必须将默认的“网桥”连接到 en1 卡,但如果不更改与 en0 的连接,我还无法做到这一点。
尝试
- 我试图在production.yml中将“桥”和“主机”网络分配给django,而将“桥”分配给其他网络,但它没有说只允许一个“主机”网络。
- 我试图将“主机”分配给 django 容器,连接到 VM_P 但其他容器不再连接到 django。
- 我检查了 Pipework 解决方案,但建议在使用之前检查“本机”方式。
感谢您的帮助!