docker - Docker compose 3.1,两个docker-compose.yml之间的通信

标签 docker docker-compose

在过去的三天内,我一直在尝试连接由两个单独的docker-compose文件生成的两个docker容器。

我尝试了很多方法,但似乎都行不通。当前,添加网络以撰写文件后,添加网络的服务无法启动。我的目标是从另一个容器访问端点。

端点API撰写文件:

    version: "3.1"

    networks:
      test:

    services:
        mariadb:
          image: mariadb:10.1
          container_name: list-rest-api-mariadb
          working_dir: /application
          volumes:
            - .:/application
          environment:
            - MYSQL_ROOT_PASSWORD=root
            - MYSQL_DATABASE=list-api
            - MYSQL_USER=list-api
            - MYSQL_PASSWORD=root
          ports:
            - "8003:3306"

        webserver:
          image: nginx:stable
          container_name: list-rest-api-webserver
          working_dir: /application
          volumes:
              - .:/application
              - ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
          ports:
           - "8005:80"
          networks:
           - test

        php-fpm:
          build: docker/php-fpm
          container_name: list-rest-api-php-fpm
          working_dir: /application
          volumes:
            - .:/application
            - ./docker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini

使用者撰写文件:
version: "3.1"

networks:
  test:

services:
    consumer-mariadb:
      image: mariadb:10.1
      container_name: consumer-service-mariadb
      working_dir: /consumer
      volumes:
        - .:/consumer
      environment:
        - MYSQL_ROOT_PASSWORD=root
        - MYSQL_DATABASE=consumer
        - MYSQL_USER=consumer
        - MYSQL_PASSWORD=root
      ports:
        - "8006:3306"

    consumer-webserver:
      image: nginx:stable
      container_name: consumer-service-webserver
      working_dir: /consumer
      volumes:
          - .:/consumer
          - ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      ports:
       - "8011:80"
      networks:
       - test

    consumer-php-fpm:
      build: docker/php-fpm
      container_name: consumer-service-php-fpm
      working_dir: /consumer
      volumes:
        - .:/consumer
        - ./docker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini

有人可以告诉我从使用者内部访问API容器的最佳方法吗?我对此一无所知。

最佳答案

你两个

    networks:
      test:

不要指代同一个网络,但它们是独立的,并且彼此之间不交谈。

您可以做的是拥有一个既可以组成文件又可以通话和共享的外部现有网络。您可以使用docker network create做到这一点,然后在撰写文件中使用
networks:
  default:
    external:
      name: some-external-network-here

关于docker - Docker compose 3.1,两个docker-compose.yml之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57543904/

相关文章:

.net - 无法测试部署到 Docker 的简单 Asp.net 核心 Web API

networking - Docker Compose网络:nginx中的主机名无法解析

docker - 如何使用 "&"创建 Dockerfile 以运行命令?

docker - 使用无法识别的选项 '--with-freetype-dir=/usr/include/'创建服务网络时出错

mysql - docker compose 运行 mysql 客户端来对抗运行 mysql 容器

azure - 为 Azure 多容器应用程序(多个存储库)设置 Azure Pipelines

docker - GitHub 操作 : How to run docker-compose in windows-latest and macos-latest?

docker - 如何上传Dockerfile到dockerhub?

docker-compose - 在两台不同的 PC 上设置 Hyperledger 结构

amazon-web-services - 自动化Docker Swarm的工具