是否可以使用docker在phpMyAdmin中拥有多个默认mysql服务器

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

我正在尝试使用 Docker 与两台 MySQL 服务器和一台 phpMyAdmin 服务器构建环境,以便在开发过程中轻松分析数据。 我的 docker-compose.yml 看起来像这样。

version: "3.9"
  services:
    database1:
      container_name: Database1
      image: mysql:8.0.28
      command: --default-authentication-plugin=mysql_native_password
      restart: always
      environment:
        MYSQL_DATABASE: database1
        MYSQL_ROOT_PASSWORD: somepassword
        MYSQL_USER: databaseuser1
        MYSQL_PASSWORD: databaseuser1
      ports:
        - "3306:3306"
      volumes:
        - database-volume:/var/lib/mysql
      networks: 
        - my_network
      database2:
      container_name: Database2
      image: mysql:8.0.28
      command: --default-authentication-plugin=mysql_native_password
      restart: always
      environment:
        MYSQL_DATABASE: database2
        MYSQL_ROOT_PASSWORD: somepassword
        MYSQL_USER: databaseuser2
        MYSQL_PASSWORD: databaseuser2
      ports:
        - "3307:3306"
      volumes:
        - second-database-volume:/var/lib/mysql
      networks: 
        - my_network      
    phpmyadmin:
      container_name: PhpMyAdmin
      image: phpmyadmin/phpmyadmin:5.1.3
      restart: always
      depends_on:
        - database1
        - database2
      environment:
        PMA_HOST: database1, database2
        PMA_PORT: 3306, 3307
        PMA_USER: databaseuser1, databaseuser2
        PMA_PASSWORD: databaseuser1, databaseuser2
      ports:
        - "8080:80"
      networks: 
        - my_network
volumes:
  database-volume:
  second-database-volume:

networks:
  my_network:
    driver: bridge

我想知道是否有任何构建方式可以存档此内容。

mysql docker docker-compose phpmyadmin
3个回答
2
投票

您是否尝试过将环境变量

PMA_HOST
更改为
PMA_HOSTS

Screenshot of phpMyAdmin select server

官方 phpMyAdmin Docker 镜像


0
投票

是的!!!您可以在 docker 中使用单个 PhpMyAdmin 实例连接多个数据库。

请在此处查找示例:

version: "3"
networks:
  sample_network:
services:
  db-1:
    image: mariadb:10.5.8
    container_name: db-1
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: notSecureWay
      MYSQL_ROOT_USER: root
      MYSQL_DATABASE: db-1
      MYSQL_PASSWORD: notSecureWay
    networks:
      - sample_network
#    ports:
#      - 8087:3306
    volumes:
      - db1_data:/var/lib/mysql

  db-2:
    image: mariadb:10.5.8
    container_name: db-2
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: notSecureWay
      MYSQL_ROOT_USER: root
      MYSQL_DATABASE: db-2
      MYSQL_PASSWORD: notSecureWay
    networks:
      - sample_network
#    ports:
#      - 8088:3306
    volumes:
      - db2_data:/var/lib/mysql
      
  phpmyadmin:
    image: phpmyadmin
    container_name: phpmyadmin
    links:
      - db-1
      - db2
    environment:
      PMA_HOSTS: dv-1,db-2
      PMA_PORT: 3306
      PMA_ARBITRARY: 1
    restart: always
    networks:
      - sample_network
    ports:
      - 8090:80


volumes:
  db1_data:
  db2_data:

使用 http://localhost:8090/ 在浏览器中启动 phpMyAdmin 应用程序 您可以在 phpMyAdmin 应用程序的登录屏幕中选择数据库。


0
投票

除了

PMA_HOSTS
还可以使用定制配置。创建一个名为
config.user.inc.php
的文件并将内容放在下面。

<?php

#config.user.inc.php file

$cfg['Servers'] = [
    1 => [ #For MySQL instance inside docker compose
        'auth_type' => 'config',
        'host' => 'container_name',
        'user' => 'USER',
        'password' => 'PASSWORD',
    ],
    2 => [ # for remote connection
        'auth_type' => 'config',
        'host' => 'REMOTE_HOST_IP',
        'user' => 'USER',
        'password' => 'PASSWORD'
    ],
    # Add other connections if needed.
];

然后,添加新卷

localPath/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.