【问题标题】:Connect Postgresql from Docker Swarm Container从 Docker Swarm 容器连接 Postgresql
【发布时间】:2021-08-21 12:06:20
【问题描述】:

我有 5 个微服务,打算部署在由 3 个节点组成的 docker swarm 集群上。

我还有一个运行在我拥有的 3 台服务器之一上的 postgresql 服务(不是 dockerized,而是安装在服务器上)。我确实将网络分配为所有服务的“主机”,但它们只是拒绝启动,没有生成日志。

version: '3.8'
services:

  frontend-client:
    image: xxx:10
    container_name: frontend
    restart: on-failure
    deploy:
      mode: replicated
      replicas: 3
    networks:
      - "host"
    ports:
      - "xxxx:3000"

networks:
  host:
    name: host
    external: true

我也尝试从没有安装 postgres 的服务器启动 centos 容器,并且能够使用分配给它的主机网络 ping 和 telnet postgresql 端口。

有人可以帮我缩小问题范围或看看我可能遗漏的可能性吗???

【问题讨论】:

    标签: docker docker-compose docker-swarm docker-machine docker-registry


    【解决方案1】:

    docker swarm 目前不支持“host”network_mode,因此您最好的选择(和最佳实践)是将您的 postgresql 主机 IP 地址作为环境变量传递给使用它的服务。

    如果您使用 docker-compose 而不是 docker swarm,则可以将 network_mode 设置为 host:

    version: '3.8'
    services:
    
      frontend-client:
        image: xxx:10
        container_name: frontend
        restart: on-failure
        deploy:
          mode: replicated
          replicas: 3
        network_mode: "host"
        ports:
          - "xxxx:3000"
    

    请注意,我已经删除了您的 compose sn-p 的 networks 部分,并将其替换为 network_mode。

    【讨论】:

    • 使用network_host时出现以下错误Ignoring unsupported options: network_mode
    • 这是因为您使用的是 docker-swarm。 network_mode 仅在 docker-compose 中受支持。
    • 但我们的计划是在 docker swarm 上提供服务,而不是在我们目前拥有的节点上单独使用 docker-compose。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2018-01-02
    • 2021-02-03
    • 1970-01-01
    相关资源
    最近更新 更多