【发布时间】:2021-05-22 14:04:40
【问题描述】:
我有一个通过 VPN 容器 (vpn) 连接到互联网的应用程序容器 (app)。虽然该连接有效,但应用容器现在无法连接到数据库容器 (db)。
有没有办法让app 容器连接到本地容器(或任何 RFC1918 地址),同时也通过vpn 连接?我只需将db 添加到相同的network_mode 中,但db 需要由另一个未通过vpn 连接的容器访问(第二个应用程序将从db 读取)。
VPN 容器正在运行bubuntux/nordvpn,我的 docker-compose.yml 如下:
version: "3.9"
services:
app:
build: app/
depends_on:
- db
network_mode: service:vpn
depends_on:
- vpn
db:
image: postgres:alpine
restart: always
network_mode: service:vpn
environment:
POSTGRES_USER: PASSWORD
POSTGRES_PASSWORD: PASSWORD
POSTGRES_DB: PASSWORD
vpn:
image: bubuntux/nordvpn
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.rp_filter=2
devices:
- /dev/net/tun
environment:
- USER=EMAIL@EMAIL.COM
- "PASS=PASSWORD"
- CONNECT=United_States
- TECHNOLOGY=NordLynx
ulimits:
memlock:
soft: -1
hard: -1
我尝试过使用link,如下:
app:
links:
- db
但是,我收到一个启动错误,特别是 container type network can't be used with links.
重申问题:如何通过 VPN 容器(在本例中为 bubuntux/nordvpn)将容器连接到互联网,并且非 VPN 连接的容器也可以访问该容器?
谢谢!
【问题讨论】:
标签: docker docker-compose vpn