代码之家  ›  专栏  ›  技术社区  ›  The50

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

  •  0
  • The50  · 技术社区  · 5 年前

    我正在使用此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日志,看到了以下内容:

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

    2 回复  |  直到 5 年前
        1
  •  1
  •   Abdelkarim EL AMEL    5 年前

    为了 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
    

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

        2
  •  0
  •   nologin    5 年前

    必须公开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
    
        3
  •  0
  •   aram yazdanpanah    5 年前