我正在使用WSL 2,并试图通过我的坞应用程序容器(Symfony 4.4)连接到我的MySQL数据库。关于这个问题的其他帖子并没有帮助我找到解决办法,所以我现在就问你。请不要犹豫,让我添加其他文件,可以帮助我们获得更多关于这个问题的信息。
所有容器表面上运行良好(这里的细节)。
然后,我使用docker exec -it app-backend-fairfair bash进入我的应用程序容器,成功地运行composer install。它工作正常(这里的细节)。
最后,我运行了php bin/console doctrine:database:create,但是即使我在本地主机上拥有完全的数据库访问权限:8081,它也不能工作,我仍然会得到SQLSTATE[HY000] [2002] Connection refused错误。完整的错误消息这里。
文件使用
这是我的码头.env文件:
SERVER_PORT=8080
ADMINER_PORT=8081
# name and group of your user
HOST_USER=shamzic
# Path to store data in your machine
MYSQL_VOLUME=/var/docker-volume/fairfair/database
# Password for root user
MYSQL_ROOT_PASSWORD=root在.env symfony容器文件中:
...
DATABASE_URL=mysql://root:root@db:3306/main
...对接者-Compose.yaml文件:
version: '3.2'
services:
app-backend-fairfair:
build:
context: .
dockerfile: app.dockerfile
args:
USER: ${HOST_USER}
volumes:
- '../../:/usr/src/backend-fairfair'
networks:
- app-backend-fairfair
- db
restart: on-failure
container_name: app-backend-fairfair
server-backend-fairfair:
build:
context: .
dockerfile: server.dockerfile
networks:
- app-backend-fairfair
ports:
- ${SERVER_PORT}:80
restart: on-failure
depends_on:
- app-backend-fairfair
container_name: server-backend-fairfair
db:
image: mysql:8.0
build:
context: .
dockerfile: database.dockerfile
volumes:
- ${MYSQL_VOLUME}:/var/lib/mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
networks:
- db
restart: on-failure
container_name: db
adminer:
build:
context: .
dockerfile: adminer.dockerfile
ports:
- ${ADMINER_PORT}:8080
restart: on-failure
networks:
- db
depends_on:
- db
container_name: adminer
networks:
app-backend-fairfair:
name: app-backend-fairfair
db:
name: db我确信这可以通过一些改变来解决.也许在码头-复合. file文件里?
提前感谢您的帮助!
发布于 2021-07-27 14:02:10
谢谢你的回答。我的问题只是因为.env文件找不到正确的数据库路径.好了!
发布于 2021-07-22 11:08:25
您的配置看起来很好,应该可以按预期工作。
错误消息还指示网络设置正常工作,可以解析db主机,但它不接受连接。很可能数据库还没有准备好接受连接。仅仅等待它完成初始化就足够了。
因此,通过检查服务的日志输出,验证mysql服务已经完成初始化:
docker-compose logs db然后验证它是否接受本地接口/unix套接字上的连接:
docker-compose exec db mysql -u root -proot接下来,您可以验证mysql是否接受其(从容器的角度来看)外部接口上的连接:
docker-compose run --rm db mysql -h db -u root -proothttps://stackoverflow.com/questions/68470312
复制相似问题