社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

The50 • 6 年前 • 1454 次点击  

我正在使用此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

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