如何让两个 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了解更多信息