作者:向日葵一样2502932413 | 来源:互联网 | 2022-12-17 14:58
I'm trying to build docker compose containers for Nginx + PHP(Laravel) + MySQL, but I keep getting Connection refused error
docker-compose.yml
version: "3"
services:
nginx:
image: nginx:latest
ports:
- '8080:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/logs/nginx
- ./apps:/var/www/html
depends_on:
- php
restart: always
php:
image: laradock/php-fpm:2.2-7.2
volumes:
- ./apps:/var/www/html
restart: always
mysql:
image: mariadb
ports:
- '33060:3306'
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
restart: always
In ./apps
I have a brand new Laravel app with basic SQL setup
All containers run without errors, and I can connect to the MySQL container using
mysql -u 127.0.0.1 -P 33060 -u root -p
但是当我尝试从浏览器访问或将ssh直接导入php容器时,我始终收到错误2002。
我在服务器上运行了nginx和mysql,所以我使用8080和33060端口,不确定是否是问题所在。
.env
DB_COnNECTION=mysql
DB_HOST=127.0.0
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret
谢谢你的帮助。
1> cwang..:
从Github发行中得到想法
我的第一个猜测是,当它需要通过非本地主机连接进行连接时,它正试图找到mysql unix套接字文件而死。如果要使用compose文件启动它们,则可以连接到docker提供的dns名称(即,链接:docker-mysql,将dns名称设置为docker-mysql)。因此,您必须更改连接线:
- php -r "new PDO('mysql:host=localhost;port=3306;charset=utf8', 'root', '123123');"
+ php -r "new PDO('mysql:host=docker-mysql;port=3306;charset=utf8', 'root', '123123');"
通过DB_HOST
将更改为.env
文件中的Docker容器名称来解决此问题
DB_HOST=docker_mysql_1