无法从docker swarm集群内部连接到外部mongodb服务

无法从docker swarm集群内部连接到外部mongodb服务,mongodb,cluster-computing,docker-compose,docker-swarm,Mongodb,Cluster Computing,Docker Compose,Docker Swarm,若我运行后端的单个docker容器,它运行良好并连接到主机上运行的mongodb。但当我使用docker compose运行后端时,它不会连接到mongodb并打印到控制台: MongoError: failed to connect to server [12.345.678.912:27017] on first connect [MongoError: connection 0 to 12.345.678.912:27017 timed out] docker-compose.yml内容

若我运行后端的单个docker容器,它运行良好并连接到主机上运行的mongodb。但当我使用docker compose运行后端时,它不会连接到mongodb并打印到控制台:

MongoError: failed to connect to server [12.345.678.912:27017] on first connect [MongoError: connection 0 to 12.345.678.912:27017 timed out]
docker-compose.yml内容:

version: "3"
services:
  web:
    image: __BE-IMAGE__
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.1"
          memory: 2048M
    ports:
      - "1337:8080"
    networks:
      - webnet
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "1340:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
networks:
  webnet:
如何运行单个docker容器:

docker run -p 1337:8080 BE-IMAGE

您需要链接mongo端口,因为localhost在容器内部和外部是不同的

ports:
  - "1337:8080"
  - "27017:27017"

在端口定义中,左侧为外部,右侧为容器内部。。。您的错误表示容器内部无法看到端口27017。。。上面只是链接mongo端口,以便容器可以在docker之外访问该端口

能否显示docker compose文件内容,以及如何启动单个容器?@MiguelMarques更新问题通常使用相同的docker-compose.yaml文件启动mongo。。。如果mongo是在上面之前独立启动的,那么您就不那么高人一等了。。。这就是你在做的吗?@ScottStensland我不使用docker来启动mongodb。我以ussual的身份在主机上运行它。“1337:8080”-这是我已经编写的后端端口,mongodb在主机上运行,而不是在DOCKER中。