我为LEMP本地服务器创建了一个docker配置。我尝试将Symfony应用程序与MySQL数据库版本8连接,但连接被拒绝。
错误:SQLSTATE[HY000] [2002] Connection refused.
问题出在Symfony 5所需的.env文件中的DATABASE_URL。对于给定的docker-compose.yml配置,DATABASE_URL的正确值是多少?我在Docker for Windows上运行此程序。我可以使用用户名root和root密码连接到mysql bash。
docker-compose.yml
###############################################################################
# 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发布于 2020-06-03 00:12:11
通常,DATABASE_URL字符串是标准字符串:
mysql://user:pwd@host:port/db在这种情况下:
DATABASE_URL=mysql://sampleuser:FxGBWfJ86ykq@127.0.0.1:8002/maindatabase将其放入您的.env.local文件中,它应该可以工作。但是请注意,我在unix上工作,附近没有Windows计算机。
更新
按照Alexander的建议,如果您在容器中运行Symfony应用程序(我没有注意到您的are服务器容器,对不起!),那么您应该将字符串更改为
DATABASE_URL=mysql://sampleuser:FxGBWfJ86ykq@mysql:3306/maindatabase但是,请注意,对于容器到容器的通信,您应该使用默认端口(或公开一个新端口)。至于设置查询,您可以使用serverVersion参数,或者(我使用更好的方法)在您的doctrine.yaml配置文件中设置它。此外,请注意您的服务器版本应该与您在docker-compose文件中指定的版本相匹配。
https://stackoverflow.com/questions/62151740
复制相似问题