如何让两个 docker 容器一个 运行 一个烧瓶服务和 golang 服务相互交谈?
how to get two docker containers one running a flask service and golang services to talk to each other?
我有一个 flask 服务 运行ning 通过 docker-compose 在端口 5000 上。同样,我有一个不同的 go 服务 运行ning 通过另一个 docker-在端口 8000 上撰写。Golang 服务需要在 5000 上调用 flask API 运行ning。我在让 go 服务调用 flask 服务时遇到了麻烦。我尝试添加 docker-network 但失败了。 运行 通过不同的 docker-compose 与单一 docker-compose 相比,这两种服务的优缺点是什么? (顺便说一句,我无法在单个 docker-compose 中成功 运行 它们)。 docker ps running both the containers。
Flask Docker 编写
version: '3' # version of compose format
services:
bidders:
build:
dockerfile: Dockerfile
context: .
volumes:
- .:/usr/src/bidders # mount point
ports:
- 5000:5000 # host:container
开始Docker撰写
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"
第三网络作品Docker-compose.yml
#docker-compose.yml
version: '3'
networks:
- second_network
networks:
second_network:
driver: bridge
使用单个 docker-compose.yml
可以更轻松地在同一网络中提供两种服务。那么您在执行此操作时遇到了什么问题?还要确保你的 flask 和 go 应用程序都从代码本身绑定到 0.0.0.0
,而不是 127.0.0.1
,这样你就可以从容器外部访问它们。
有两个 docker-compose.yml
你有两个选择:
通过其中一个文件创建一个网络,并使另一个文件中的另一个容器加入这个外部网络。
使用 docker network create
创建网络并在两个文件中为您的容器定义外部网络
有一个类似的问题,您可以查看 的答案并附上示例
您可以查看Networking in Compose了解更多信息
我有一个 flask 服务 运行ning 通过 docker-compose 在端口 5000 上。同样,我有一个不同的 go 服务 运行ning 通过另一个 docker-在端口 8000 上撰写。Golang 服务需要在 5000 上调用 flask API 运行ning。我在让 go 服务调用 flask 服务时遇到了麻烦。我尝试添加 docker-network 但失败了。 运行 通过不同的 docker-compose 与单一 docker-compose 相比,这两种服务的优缺点是什么? (顺便说一句,我无法在单个 docker-compose 中成功 运行 它们)。 docker ps running both the containers。
Flask Docker 编写
version: '3' # version of compose format
services:
bidders:
build:
dockerfile: Dockerfile
context: .
volumes:
- .:/usr/src/bidders # mount point
ports:
- 5000:5000 # host:container
开始Docker撰写
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"
第三网络作品Docker-compose.yml
#docker-compose.yml
version: '3'
networks:
- second_network
networks:
second_network:
driver: bridge
使用单个 docker-compose.yml
可以更轻松地在同一网络中提供两种服务。那么您在执行此操作时遇到了什么问题?还要确保你的 flask 和 go 应用程序都从代码本身绑定到 0.0.0.0
,而不是 127.0.0.1
,这样你就可以从容器外部访问它们。
有两个 docker-compose.yml
你有两个选择:
通过其中一个文件创建一个网络,并使另一个文件中的另一个容器加入这个外部网络。
使用
docker network create
创建网络并在两个文件中为您的容器定义外部网络
有一个类似的问题,您可以查看
您可以查看Networking in Compose了解更多信息