我可以将 docker-compose 服务扩展两次(多次)吗?

问题描述 投票:0回答:1

我有一个 maria-db 数据库 docker-compose.yml:

version: '3.8'

services:
  mariadb:
    image: mariadb:latest
    container_name: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: admin
      MYSQL_DATABASE: "wordpress3,wordpress4"
      MYSQL_USER: mohsin
      MYSQL_PASSWORD: 12345678
    volumes:
      - mariadb_data:/var/lib/mysql
    networks:
      - wordpress_network

networks:
  wordpress_network:
    external: true
    name: wordpress_network

volumes:
  mariadb_data:

我正在运行两个 wordpress docker-compose 文件(用于测试目的)。我想将它们连接到 mariadb docker-compose。两个文件都有相似的配置:

version: '3.8'

services:
  wordpress:
    image: wordpress:latest
    container_name: wordpress3
    restart: always
    environment:
      WORDPRESS_DB_HOST: mariadb
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: admin
      WORDPRESS_DB_NAME: wordpress3
    ports:
      - "8083:80"
    depends_on:
      - mariadb
    networks:
      - wordpress_network
  mariadb:
    extends:
      file: ../mariadb/docker-compose.yml
      service: mariadb

networks:
  wordpress_network:
    name: wordpress_network
    external: true

当我运行第一个 wordpress docker-compose 时,它会自动运行 mariadb 并连接到它。与此同时,另一个实例抛出一个错误,提示“

mariadb already in use
”。 我希望它识别出 mariadb 已经在运行,并自动连接到共享实例?

docker docker-compose mariadb docker-network
1个回答
0
投票

您需要确保要相互通信的容器位于同一网络上。

例如:

# first/docker-compose.yml
version: '2'
services:
  first:
    ...
    networks:
      - some-net
networks:
  some-net:
    driver: bridge


# second/docker-compose.yml
version: '2'
services:
  second:
    ...
    networks:
      - first_some-net
networks:
  first_some-net:
    external: true

注意:您的应用程序的网络是根据“项目名称”命名的,该名称基于其所在目录的名称,在本例中添加了前缀first_

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