我有一个烧瓶服务通过端口5000上的docker-compose运行。类似地,我有一个不同的go服务通过端口8000上的另一个docker-compose运行。Golang服务需要调用在5000上运行的flask API。在获取go服务以调用flask服务方面面临麻烦。我尝试添加docker-network但失败了。与单个docker-compose相比,通过不同的docker-compose运行这两种服务的优缺点是什么? (我无法在单个docker-compose,btw中成功运行它们)。 docker ps running both the containers。
烧瓶Docker组成
version: '3' # version of compose format
services:
bidders:
build:
dockerfile: Dockerfile
context: .
volumes:
- .:/usr/src/bidders # mount point
ports:
- 5000:5000 # host:container
Go Docker Compose
version: '3'
services:
auctions:
container_name: auctions
build: .
command: go run main.go
volumes:
- .:/go/src/auctions
working_dir: /go/src/auctions
ports:
- "8000:8000"
第三个Nwtwork Docker-compose.yml
#docker-compose.yml
version: '3'
networks:
- second_network
networks:
second_network:
driver: bridge
答案 0 :(得分:1)
使用单个docker-compose.yml
,可以使两个服务都在同一网络内变得更加容易。那么,您在执行此操作时遇到了什么问题?还要确保您的flask and go应用程序都从代码本身而不是0.0.0.0
绑定到127.0.0.1
,以便您可以从容器外部访问它们。
有了两个docker-compose.yml
,您有两个选择:
通过这些文件之一创建网络,并使另一个文件中的另一个容器加入该外部网络。
使用docker network create
创建网络,并在两个文件中为您的容器定义一个外部网络
还有一个类似的问题,您可以从here中查看包含示例的答案
您可以检查Networking in Compose以获得更多信息