docker compose:仅通过另一个容器(vpn)发送一些流量
我有一个应用程序,它由一个爬虫和一个MySQL数据库组成。我想通过VPN当我做我的爬虫,但不使用VPN当我连接到我的数据库。我已经设法让我的应用程序容器通过我的VPN容器发送所有流量,但现在我无法连接到位于localhost的数据库。我尝试过使用主机地址docker compose:仅通过另一个容器(vpn)发送一些流量,docker,docker-compose,vpn,Docker,Docker Compose,Vpn,我有一个应用程序,它由一个爬虫和一个MySQL数据库组成。我想通过VPN当我做我的爬虫,但不使用VPN当我连接到我的数据库。我已经设法让我的应用程序容器通过我的VPN容器发送所有流量,但现在我无法连接到位于localhost的数据库。我尝试过使用主机地址localhost,127.0.0.1,以及数据库的容器名,但都不起作用 我如何通过VPN容器路由一些流量,以及一些正常的流量 这是我的docker撰写文件: version: '3.7' services: db:
localhost
,127.0.0.1
,以及数据库的容器名,但都不起作用
我如何通过VPN容器路由一些流量,以及一些正常的流量
这是我的docker撰写文件:
version: '3.7'
services:
db:
image: mysql:8
restart: always
environment:
MYSQL_DATABASE: my_db
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: pw
MYSQL_PASSWORD: pw
MYSQL_PORT: 3308
ports:
- "3308:3306"
command: --default-authentication-plugin=mysql_native_password
vpn:
build:
context: ./
dockerfile: Dockerfile-openvpn-dev
restart: always
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
volumes:
- ./openvpn:/vpn
command: openvpn --config /vpn/config.ovpn --auth-user-pass /vpn/client.pwd --auth-nocache
app:
build:
context: ./
dockerfile: Dockerfile-crawler-dev
environment:
MYSQL_DATABASE: my_db
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: pw
MYSQL_PASSWORD: pw
MYSQL_HOST: db
MYSQL_PORT: 3306
network_mode: service:vpn
您必须将db和vpn放在同一个网络上。本地容器流量未通过vpn路由。如果您不想通过vpn路由外部流量,则必须在vpn服务上使用iptables。
还要确保在ovpn配置中包含重定向网关def1
version: '3.7'
services:
db:
image: mysql:8
restart: always
networks:
- default
environment:
MYSQL_DATABASE: my_db
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: pw
MYSQL_PASSWORD: pw
MYSQL_PORT: 3308
ports:
- "3308:3306"
command: --default-authentication-plugin=mysql_native_password
vpn:
build:
context: ./
dockerfile: Dockerfile-openvpn-dev
restart: always
networks:
- default
#might be necessary:
#links:
# - db
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
volumes:
- ./openvpn:/vpn
command: openvpn --config /vpn/config.ovpn --auth-user-pass /vpn/client.pwd --auth-nocache
app:
build:
context: ./
dockerfile: Dockerfile-crawler-dev
environment:
MYSQL_DATABASE: my_db
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: pw
MYSQL_PASSWORD: pw
MYSQL_HOST: db
MYSQL_PORT: 3306
network_mode: service:vpn
depends_on:
- vpn
networks:
default:
请告诉我,如果你仍然有问题设置这个。否则,你能接受我的回答吗?谢谢