我有一个代理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
答案 0 :(得分:0)
不要将服务的端口发布到主机。
使用服务名称进行服务互通。
您可以使用服务名称,因为
@David Maze注意到
请考虑使用docker stacks。
部署堆栈就像docker stack deploy --compose-file [compose_file_path]