我有两个通过开放端口相互通信的容器。但是假设我有(网站容器)domain.com/ api api 5000:5001 ( ->容器),所以网站接受一个请求并告诉api做一些工作。我担心的是,因为它们都托管在同一个域中,网站只是一个抽象/入口点,所以用户可以使用Domain.com:5001/api直接访问api容器,而不是使用Domain.com/api。下面是一个docker-compose文件示例
version: '3'
services:
api-service:
build: ./nlpapi
ports:
- 5001:80
website-service:
build: ./tweetnlpwebsite
volumes:
- ./tweetnlpwebsite:/usr/src/app
ports:
- 5000:80
depends_on:
- api-service我刚接触docker,但我对这个文件的理解是,docker主机有两个容器,通过端口5001连接到docker主机,您将获得web容器的端口80,它会显示页面。通过5000连接到主机,你可以cURL它一个请求,它会响应,因为api容器暴露在那个端口上。
我如何才能使这些容器能够在内部安全地相互通信,并且只发出请求/访问web服务?
谢谢!
发布于 2018-08-08 05:24:10
您可以为website-service和api-service创建用户定义的网络以进行相互通信,然后仅将website-service发布到外部世界。
version: '3'
services:
api-service:
build: ./nlpapi
networks:
- app
website-service:
build: ./tweetnlpwebsite
volumes:
- ./tweetnlpwebsite:/usr/src/app
ports:
- 5000:80
depends_on:
- api-service
networks:
- app
networks:
- app现在,website-service可以通过api-service:80访问api-service,但外部世界不能直接访问api-service。
https://stackoverflow.com/questions/51735544
复制相似问题