首页 > 解决方案 > 如何通过主机连接 2 个 docker 容器?

问题描述

我有一个 nginx 代理容器作为主机,并希望通过 localhost 在 cms 和 mongo 容器之间进行通信。不幸的是 localhost:27017 在 cms 容器中不可用。

我应该如何将它们连接到我需要的工作?

docker-compose 配置是下一个:

version: '3'
services:
  proxy:
    image: nginx:1.15-alpine
    restart: unless-stopped
    privileged: true
    ports:
      - "80:80"
      - "443:443"
    network_mode: host
    depends_on:
      - cms
      - mongo
  cms:
    container_name: cms
    restart: unless-stopped
    build: cms
    env_file:
    links:
      - mongo
    ports:
      - '1337:1337'
  mongo:
    image: mongo
    restart: always
    ports:
      - '27017:27017'
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081

顺便说一句:mongo-express 可以访问 mongo 容器

标签: docker-compose

解决方案


  • 尝试使用其服务名称连接mongo到:cmsmongo:27017

或添加network_mode: host到 mongo 服务规范:

  mongo:
    image: mongo
    restart: always
    network_mode: host
    ports:
      - '27017:27017'

和厘米:

  cms:
    container_name: cms
    restart: unless-stopped
    build: cms
    network_mode: host
    env_file:
    links:
      - mongo
    ports:
      - '1337:1337'

如果你想使用localhost:27017in连接到 mongocms


推荐阅读