【问题标题】:How to get two Docker compose files to talk to each other?如何让两个 Docker 组合文件相互通信?
【发布时间】:2021-07-16 16:16:16
【问题描述】:

我在 Windows 10 上运行 Docker compose 版本 3.9,运行 WordPress 以及 MySQL 和 PHP。 从一个 docker-compose.yml 文件运行我的所有服务非常适合我。

这是我的问题 - 我想尝试将这个项目作为 2 个单独的 docker-compose yml 文件并行运行,但是当我使用浏览器时,WordPress 会抱怨。这是我的步骤...

我现在成功启动并运行了一个 docker compose yml 文件,其中包含我的 MySQL 和 phpmyadmin 服务...

        version: '3.9'
        
        services:
          # Database
          db:
            image: mysql:5.7
            volumes:
              - db_data:/var/lib/mysql
            restart: always
            environment:
              MYSQL_ROOT_PASSWORD: password
              MYSQL_DATABASE: klewis
              MYSQL_USER: klewis
              MYSQL_PASSWORD: klewis
            networks:
              - wpsite
          # phpmyadmin
          phpmyadmin:
            depends_on:
              - db
            image: phpmyadmin/phpmyadmin
            restart: always
            ports:
              - '8080:80'
            environment:
              PMA_HOST: db
              MYSQL_ROOT_PASSWORD: password
            networks:
              - wpsite
        networks:
          wpsite:
        volumes:
          db_data:

然后,我在另一个文件夹环境中创建了第二个 docker-compose yml 文件,仅使用我的 WordPress 服务(如果我将代码拆分到此文件中是错误的,我深表歉意 - 我还在学习这一点!) ...

    version: '3.9'
    
    services:
      # don't need db or phpmyadmin loaded here because its already running on another instance!
      # Wordpress
      wordpress:
        depends_on:
          - db
        image: wordpress:latest
        ports:
          - '5939:80'
        restart: always
        volumes: ['./wp:/var/www/html']
        environment:
          WORDPRESS_DB_HOST: db:3306
          WORDPRESS_DB_USER: hc
          WORDPRESS_DB_PASSWORD: hc
          WORDPRESS_DB_NAME: hc202107
        networks:
          - wpsite
    networks:
      wpsite:
    volumes:
      db_data:

但是当我运行第二个撰写文件并转到浏览器时,WordPress 向我显示以下错误:

我错过了什么或做错了什么?

【问题讨论】:

    标签: wordpress docker docker-compose


    【解决方案1】:

    您需要在您的网络上指定external: true。如果不这样做,您实际上会得到两个独立的网络:project1_wpsite 和 project2_wpsite。

    更改两个 docker-compose 文件以包含这样的外部文件

       networks:
          wpsite:
             external: true
    

    在使用 docker network create wpsite 启动 docker-compose 配置之前,您需要手动创建网络。

    【讨论】:

    • 您的指示效果很好。那是我第一次接触到创建一个 docker 网络来将它们连接在一起。我现在还可以通过我的终端检查网络并在两种环境中查看它。非常感谢。
    猜你喜欢
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    相关资源
    最近更新 更多