Py学习  »  docker

Docker无法连接到MySQL运行Docker compose up

The50 • 6 年前 • 1457 次点击  

我正在使用此Docker配置: https://github.com/romaricp/kit-starter-symfony-4-docker

我使用以下方法启动环境:

docker合成生成

docker组合-d

一切运行正常,但MySQL服务有问题。我得到一个Symfony错误:

“驱动程序中发生异常:找不到驱动程序”

mysqli_real_connect():php_network_getaddresses:getaddrinfo失败:

你知道我该怎么做吗?

docker-compose.yml文件:

version: '3'
services:
apache:
    build: .docker/apache
    container_name: sf4_apache
    ports:
      - 80:80
    volumes:
      - .docker/config/vhosts:/etc/apache2/sites-enabled
      - .:/home/wwwroot/sf4
    depends_on:
      - php

mysql:
    image: mysql
    container_name: sf4_mysql
    volumes:
        - .docker/data/db:/var/lib/mysql
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: sf4
        MYSQL_USER: sf4
        MYSQL_PASSWORD: sf4

php:
    build: .docker/php
    container_name: sf4_php
    volumes:
      - .:/home/wwwroot/sf4
    environment:
      - maildev_host=sf4_maildev
    depends_on:
      - maildev
      - mysql

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: sf4_phpmyadmin
    ports:
        - 8080:80
    links:
        - mysql

maildev:
    image: djfarrelly/maildev
    container_name: sf4_maildev
    ports:
      - 8001:80

我还打开了mysql日志,看到了以下内容:

可能是端口错误,所以我无法连接?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54371
文章 [ 3 ]  |  最新文章 6 年前
aram yazdanpanah
Reply   •   1 楼
aram yazdanpanah    7 年前

nologin
Reply   •   2 楼
nologin    7 年前

必须公开mysql端口3306:

  mysql:
    image: mysql
    container_name: sf4_mysql
    volumes:
    - .docker/data/db:/var/lib/mysql
    restart: always
    ports:
    - "3306:3306"
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: sf4
        MYSQL_USER: sf4
        MYSQL_PASSWORD: sf4
    networks:
    - default
Abdelkarim EL AMEL
Reply   •   3 楼
Abdelkarim EL AMEL    7 年前

为了 phpmyadmin 服务,我想你应该设置 PMA_HOST 和 PMA_PORT 环境变量如下:

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: sf4_phpmyadmin
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
    ports:
        - 8080:80
    links:
        - mysql

您的mysql容器应该具有 command 指令在开始时设置身份验证插件(mysql 8的连接器有问题),更多详细信息 here

mysql:
    image: mysql
    container_name: sf4_mysql
    command: "--default-authentication-plugin=mysql_native_password"
    volumes:
        - .docker/data/db:/var/lib/mysql
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: sf4
        MYSQL_USER: sf4
        MYSQL_PASSWORD: sf4

.env 文件,格式如下:

mysql_用户 : mysql_user_密码 mysql_主机 : mysql_端口 数据库名称

mysql_用户

mysql_user_密码 :用户密码(例如:root)

mysql_主机 :is应包含mysql容器服务名称 docker-compose.yml 文件(本例中为mysql)

:mysql容器内部端口(在本例中为3306)

数据库名称 :要连接到的数据库。

DATABASE_URL=mysql://root:root@mysql:3306/sf4

在这些更改之后停止容器并重新启动它们。