首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Docker容器的Symfony 5 DATABASE_URL

带有Docker容器的Symfony 5 DATABASE_URL
EN

Stack Overflow用户
提问于 2020-06-02 20:12:29
回答 1查看 1.3K关注 0票数 1

我为LEMP本地服务器创建了一个docker配置。我尝试将Symfony应用程序与MySQL数据库版本8连接,但连接被拒绝。

错误:SQLSTATE[HY000] [2002] Connection refused.

问题出在Symfony 5所需的.env文件中的DATABASE_URL。对于给定的docker-compose.yml配置,DATABASE_URL的正确值是多少?我在Docker for Windows上运行此程序。我可以使用用户名rootroot密码连接到mysql bash。

docker-compose.yml

代码语言:javascript
复制
###############################################################################
#                          Generated on phpdocker.io                          #
###############################################################################
version: "3.1"
services:

    memcached:
      image: memcached:alpine
      container_name: sampleapp-memcached

    mailhog:
      image: mailhog/mailhog:latest
      container_name: sampleapp-mailhog
      ports:
        - "8001:8025"

    redis:
      image: redis:alpine
      container_name: sampleapp-redis

    mysql:
      image: mysql:8.0
      container_name: sampleapp-mysql
      working_dir: /app
      volumes:
        - .:/app
      environment:
        - MYSQL_ROOT_PASSWORD=Ur7HJWzZ2QK9
        - MYSQL_DATABASE=maindatabase
        - MYSQL_USER=sampleuser
        - MYSQL_PASSWORD=FxGBWfJ86ykq
      ports:
        - "8002:3306"

    elasticsearch:
      image: elasticsearch:6.5.4
      container_name: sampleapp-elasticsearch

    webserver:
      image: nginx:alpine
      container_name: sampleapp-webserver
      working_dir: /app
      volumes:
          - .:/app
          - ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      ports:
       - "8000:80"

    php-fpm:
      build: phpdocker/php-fpm
      container_name: sampleapp-php-fpm
      working_dir: /app
      volumes:
        - .:/app
        - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.4/fpm/conf.d/99-overrides.ini
EN

回答 1

Stack Overflow用户

发布于 2020-06-03 00:12:11

通常,DATABASE_URL字符串是标准字符串:

代码语言:javascript
复制
mysql://user:pwd@host:port/db

在这种情况下:

代码语言:javascript
复制
DATABASE_URL=mysql://sampleuser:FxGBWfJ86ykq@127.0.0.1:8002/maindatabase

将其放入您的.env.local文件中,它应该可以工作。但是请注意,我在unix上工作,附近没有Windows计算机。

更新

按照Alexander的建议,如果您在容器中运行Symfony应用程序(我没有注意到您的are服务器容器,对不起!),那么您应该将字符串更改为

代码语言:javascript
复制
DATABASE_URL=mysql://sampleuser:FxGBWfJ86ykq@mysql:3306/maindatabase

但是,请注意,对于容器到容器的通信,您应该使用默认端口(或公开一个新端口)。至于设置查询,您可以使用serverVersion参数,或者(我使用更好的方法)在您的doctrine.yaml配置文件中设置它。此外,请注意您的服务器版本应该与您在docker-compose文件中指定的版本相匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62151740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档