无法使用docker compose将phpmyadmin连接到数据库

时间:2018-02-08 09:46:49

标签: php mysql docker phpmyadmin docker-compose

可能是这个问题曾经问过几次,但我没有得到一个可以解决我问题的有效答案。

我正在尝试使用docker-compose在不同容器上的docker中运行phpmyadmin,但它总是通过以下错误:

  

#2002 - 拒绝连接 - 服务器没有响应(或者未正确配置本地服务器的套接字)。

我的docker compose文件包含以下代码:

version: "2"

services:
  web:
    build: .
    ports:
      - "80:80"
    networks: 
      - web
    volumes:
      - .:/code
    restart: always
  db:
    image: "mysql:5"
    volumes:
      - ./mysql:/etc/mysql/conf.d
    environment:
      MYSQL_ROOT_PASSWORD: toor
      MYSQL_DATABASE: phpapp
    networks: 
      - web
    restart: always
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_PORT: 3306
      PMA_HOST: db
      PMA_USER: root
      PMA_PASSWORD: toor
    ports:
      - "8000:80"
    restart: always
    networks: 
      - web

networks: 
  web:
    driver: bridge

web容器中我尝试连接数据库并且工作正常,但问题出现在phpmyadmin连接

任何帮助将不胜感激。 :)

2 个答案:

答案 0 :(得分:1)

有趣的是,我已经运行了你的compose-file,并且可以访问phpmyadmin 来自主持人。

但是必须将端口8000更改为8004(端口8000在我的主机上占用)。

如果您的db-container启动速度不足以让phpmyadmin连接,我建议将 depends_on 添加到phpmyadmin服务中。确保db在phpmyadmin之前启动。

complex(3, 5)
complex(*(3, 5))

如果问题仍然存在,请显示 phpmyadmin: image: phpmyadmin/phpmyadmin environment: PMA_PORT: 3306 PMA_HOST: db PMA_USER: root PMA_PASSWORD: toor ports: - "8004:80" restart: always depends_on: - db networks: - web 的日志。

答案 1 :(得分:1)

现在,您需要向mysql服务添加命令以连接到phpmyadmin。

命令:--default-authentication-plugin = mysql_native_password

version: "2"
services:
db:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    ports: 
        - "3306:3306"
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_USER: user
        MYSQL_PASSWORD: test
        MYSQL_ROOT_PASSWORD: test
    volumes:
        - ./dump:/docker-entrypoint-initdb.d
        - /var/lib/mysql
    networks:
        - default
phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links: 
        - db:db
    ports:
        - 8000:80
    environment:
        PMA_HOST: db
        MYSQL_USER: user
        MYSQL_PASSWORD: test
        MYSQL_ROOT_PASSWORD: test