如何在Docker中隐藏链接容器中的端口

时间:2019-10-29 05:47:04

标签: docker-compose

我有一个代理nginx容器,可以显示80和443个端口,也有几个内部容器,其服务可以提供另一个端口。

不幸的是,此配置公开了所有内部服务(它们在docker外部可见)

如何隐藏除代理之外的所有服务?

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:
      - front
      - cms
      - mongo
  front:
    container_name: front
    restart: unless-stopped
    build: front/
    ports:
      - '5001:80'
  cms:
    container_name: corp-cms
    restart: unless-stopped
    build: cms-backend
    links:
      - mongo
    ports:
      - '1337:1337'
  mongo:
    image: mongo
    restart: always
    ports:
      - '27017:27017'
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081

1 个答案:

答案 0 :(得分:0)

不要将服务的端口发布到主机。

使用服务名称进行服务互通。

您可以使用服务名称,因为

  

Docker Compose creates a default network for you

@David Maze注意到

请考虑使用docker stacks

部署堆栈就像docker stack deploy --compose-file [compose_file_path]