重复使用网络时Docker-compose公开端口

重复使用网络时Docker-compose公开端口

我正在尝试让一组容器与 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

相关内容