如何让两个docker容器运行一个flask服务和golang服务相互通信?

问题描述 投票:-2回答:1

我有一个烧瓶服务在端口5000上运行docker-compose。同样,我有一个不同的go服务在端口8000上运行另一个docker-compose。Golang服务需要调用在5000上运行的烧瓶API。我遇到了麻烦获取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"

第三个Nwtwork Docker-compose.yml

#docker-compose.yml
version: '3'

networks:
    - second_network

networks:
  second_network:
    driver: bridge
docker go flask docker-compose docker-networking
1个回答
1
投票

使用单个docker-compose.yml,可以更容易地将两个服务放在同一个网络中。那么你在做这件事时遇到的问题是什么?还要确保你的烧瓶和去应用程序都绑定到代码本身的0.0.0.0而不是127.0.0.1,这样你就可以从容器外部到达它们。

有两个docker-compose.yml你有两个选择:

  • 通过其中一个文件创建网络,并使另一个文件中的另一个容器加入此外部网络。
  • 使用docker network create创建网络,并在容器的两个文件中定义外部网络

有一个类似的问题,你可以从here检查它的答案,包括示例

您可以查看Networking in Compose以获取更多信息

© www.soinside.com 2019 - 2024. All rights reserved.