如何使用 docker-compose 创建多个 mysql 数据库服务并在单个 phpmyadmin 服务中查看各自的数据库

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

我想创建多个数据库服务,然后使用 docker-compose 在单个 phpmyadmin 服务中查看数据库。

docker-compose 文件位于下面

version: '3.9'
services:
  dbone:
    image: mysql:latest
    restart: always
    container_name: dbone
    ports:
      - "8080:3306"
    environment:
      - MYSQL_HOST=mysql
      - MYSQL_DATABASE=sakila
      - MYSQL_USER=user
      - MYSQL_PASSWORD=test
      - MYSQL_ROOT_PASSWORD=test
      - TZ=Africa/Lagos
    volumes:
      - ./docker/data/db/mysql/dump/2-create-schema.sql:/docker-entrypoint-initdb.d/2.sql
      - persistent_1:/var/lib/mysql
    command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_general_ci", "--skip-character-set-client-handshake", "--default-authentication-plugin=caching_sha2_password"]
  dbtwo:
    image: mysql:latest
    restart: always
    container_name: dbtwo
    ports:
      - "8090:3306"
    environment:
      - MYSQL_HOST=mysql
      - MYSQL_DATABASE=mysql_json_db
      - MYSQL_USER=user
      - MYSQL_PASSWORD=test
      - MYSQL_ROOT_PASSWORD=test
      - TZ=Africa/Lagos
    volumes:
      - ./docker/data/db/mysql/dump/mysql_json_db.sql:/docker-entrypoint-initdb.d/1.sql
      - persistent_2:/var/lib/mysql
    command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_general_ci", "--skip-character-set-client-handshake", "--default-authentication-plugin=caching_sha2_password"]
  phpmyadmin:
    image: phpmyadmin:latest
    restart: always
    container_name: phpmyadmin
    depends_on:
      - done
      - dbtwo
    ports:
      - "8070:80"
    environment:
      - MAX_EXECUTION_TIME=0
      - PMA_HOST=mysql
      - PMA_ARBITRARY=1
volumes:
  persistent_1:
  persistent_2:

如上所示,dbone 和 dbtwo 是我希望可用于 phpmyadmin 服务的数据库服务。为此,我分别将 mysql 设置为 dbone 和 dbtwo 的 MYSQL_HOST 主机名,并将 mysql 设置为 phpmyadmin 服务的 PMA_HOST 主机名。

我觉得 dbone 和 dbtwo 等服务名称应该分别是两个容器的 MYSQL_HOST 名称。但是如果我分别为 dbone 和 dbtwo 容器设置 MYSQL_HOST=dbone 和 MYSQL_HOST=dbtwo ,我发现很难为 phpmyadmin 容器设置 PMA_HOST 。

我的 docker-compose 文件已使用以下命令运行

docker-compose up --build

我尝试访问 localhost:8070,它会打开 phpmyadmin,但尝试使用用户名:用户和密码:test 登录,失败并显示以下内容:

Cannot log in to the MySQL server

mysqli::real_connect(): php_network_getaddresses: getaddrinfo for mysql failed:  Temporary failure in name resolution

mysqli::real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo for mysql failed: Temporary failure in name resolution

我需要帮助来解决这个问题。

php mysql docker phpmyadmin mariadb
1个回答
0
投票

它现在可以通过以下更新来使用

version: '3.9'
services:
  dbone:
    image: mysql:latest
    restart: always
    container_name: dbone
    ports:
      - "3307:3306"
    environment:
      - MYSQL_HOST=dbone
      - MYSQL_DATABASE=sakila
      - MYSQL_USER=user
      - MYSQL_PASSWORD=test
      - MYSQL_ROOT_PASSWORD=test
      - TZ=Africa/Lagos
    volumes:
      - ./docker/data/db/mysql/dump/2-create-schema.sql:/docker-entrypoint-initdb.d/2.sql
      - persistent_1:/var/lib/mysql
    command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_general_ci", "--skip-character-set-client-handshake", "--default-authentication-plugin=caching_sha2_password"]
  dbtwo:
    image: mysql:latest
    restart: always
    container_name: dbtwo
    ports:
      - "3308:3306"
    environment:
      - MYSQL_HOST=dbtwo
      - MYSQL_DATABASE=mysql_json_db
      - MYSQL_USER=user
      - MYSQL_PASSWORD=test
      - MYSQL_ROOT_PASSWORD=test
      - TZ=Africa/Lagos
    volumes:
      - ./docker/data/db/mysql/dump/mysql_json_db.sql:/docker-entrypoint-initdb.d/1.sql
      - persistent_2:/var/lib/mysql
    command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_general_ci", "--skip-character-set-client-handshake", "--default-authentication-plugin=caching_sha2_password"]
  phpmyadmin:
    image: phpmyadmin:latest
    restart: always
    container_name: phpmyadmin
    depends_on:
      - dbone
      - dbtwo
    ports:
      - "8070:80"
    environment:
      - MAX_EXECUTION_TIME=0
      - PMA_HOSTS=dbone,dbtwo
      - PMA_ARBITRARY=1
volumes:
  persistent_1:
  persistent_2:
© www.soinside.com 2019 - 2024. All rights reserved.