我正在尝试让一组容器与 OpenVPN 客户端协同工作。我使用了这作为模板并构建我自己的容器(在 Raspberry Pi 上,因此我无法立即使用预构建的图像)。到目前为止,它运行良好,使用下面的 docker-compose 配置,我在一个容器中创建 VPN 连接,并使用第二个容器附加到该容器。第二个容器也按预期使用 VPN(通过使用 docker exec 获取公共 IP 进行测试)。
问题是:第二个容器有一个 Web 前端,通常我只会将其端口公开给公众并访问它。在这种情况下,这是不可能的。dperson 写道,您需要使用 nginx 反向代理来访问它,但这似乎过于复杂,我不需要反向代理将特定 URL 转发到端口,我只需要导出端口。或者将端口从 openvpn-client 转发到其他服务。此外 - 如果该端口不是 HTTP/S 而是 - openSSH 服务器或类似的东西 - 那么我无论如何都会迷失于 nginx 反向代理。
只是 - 我无法让它工作,而且我不知道如何正确配置它。
附加信息:我认为我不需要指定“vpn”网络,但我认为它也不会造成任何危害。
docker-compose.yml
version: "2"
networks:
vpn:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.42.42.0/24
gateway: 10.42.42.1
services:
openvpn-client:
image: openvpn-client
# ... more configuration here ...
cap_add:
- net_admin
devices:
- /dev/net/tun
networks:
vpn:
ipv4_address: 10.42.42.2
# ports exposing, those are the ports from other-service
ports:
- 1234:1234
restart: unless-stopped
other-service:
# ... some other settings ...
network_mode: "service:openvpn-client"
# ports does not work with network_mode service
# ports:
# - 1234:1234
depends_on:
- openvpn-client
restart: unless-stopped