繁体   English   中英

无法在Docker映像中连接到MySQL

[英]Can't connect to MySQL inside docker image

我已经找到了与此主题相关的一些主题,但是没有一个主题可以帮助我,因为我已经做了提供的解决方案,或者问题与我的不完全相同。


我有一个带有nginx / php-fpm等服务器的docker环境,并且正在使用我要链接到其他服务器的官方mysql映像。 这是我的码头工人组成

db:
    image: mysql
    ports:
    - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=symfonyrootpass
      - MYSQL_DATABASE=symfony
      - MYSQL_USER=symfony
      - MYSQL_PASSWORD=symfonypass

project:
    image: docker.io/project/project-dev
    ports:
    - "80:80"
    environment:
      - XDEBUG_HOST=${LOCAL_IP}
      - XDEBUG_PORT=9000
      - XDEBUG_REMOTE_MODE=req
    links:
    - db
    volumes:
    - ../project:/var/www/app

当我启动它并像这样从主机连接时: mysql -h127.0.0.1 -usymfony -psymfonypass ,然后使用use symfony; 它没有问题。 我看到我的数据库,可以编辑,删除,更新等。我可以做所有事情。

但是,我不能对docker说同样的话。 我正在使用Symfony,并且在正确设置参数后,总是会收到错误消息

驱动程序中发生异常:SQLSTATE [HY000] [2002]连接被拒绝

这些是我的参数

database_host: 127.0.0.1
database_port: null
database_name: symfony
database_user: symfony
database_password: symfonypass

我已经尝试将database_host更改为localhost但是随后出现错误No such file or directory具有相同的SQLSTATE。 我也尝试将端口设置为3306但这也无济于事。

从docker内部访问我的数据库需要做什么?

这是config.yml中描述我的mysql连接的部分

原则配置

doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        server_version: "%database_version%"

您的数据库运行在与项目不同的容器中。 Docker-compose将为它提供一个IP地址和一个主机名,即db,因为这是您命名的方式。 因此, database_host不应为127.0.0.1或localhost,而应为db

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM