如何解决Web 和 CLI mysql 不会同时连接
我已经使用 Laravel Sail(基于 Docker)设置了我的 Laravel 应用程序。除了 MysqL,一切正常。 MysqL 服务器对于 Web (local.mysite.com:8080
) 和 CLI(例如:PHP artisan migrate
)的行为不同。
配置 (1)
如果我在 .env
文件中使用以下配置,
...
APP_DOMAIN=local.mysite.com
...
DB_CONNECTION=MysqL
DB_HOST=MysqL
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=root
FORWARD_DB_PORT=3307
网络有效,而不是 CLI。当我运行 PHP artisan migrate
命令时,我得到 sqlSTATE[HY000] [2002] PHP_network_getaddresses: getaddrinfo Failed: Name or service not kNown
配置(2)
如果我使用以下配置,
...
APP_DOMAIN=local.mysite.com
...
DB_CONNECTION=MysqL
DB_HOST=local.mysite.com
DB_PORT=3307
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=root
FORWARD_DB_PORT=3307
CLI 工作正常,而不是网络。我在网络上收到 MysqL 的 Connection Refured
错误。
我一直在用不同的尝试敲我的头,没有运气......
我做错了什么?
这是我的 docker-compose.yml
供参考(顺便说一句,PHPmyadmin
工作得非常好):
# For more information: https://laravel.com/docs/sail
version: '3'
services:
PHPmyadmin:
depends_on:
- MysqL
image: PHPmyadmin/PHPmyadmin
restart: always
ports:
- '8081:80'
environment:
PMA_HOST: MysqL
MysqL_ROOT_PASSWORD: password
networks:
- sail
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
extra_hosts:
- '${APP_DOMAIN}:127.0.0.1'
hostname: '${APP_DOMAIN}'
domainname: '${APP_DOMAIN}'
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LaraVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- MysqL
MysqL:
image: 'MysqL:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MysqL_ROOT_PASSWORD: '${DB_PASSWORD}'
MysqL_DATABASE: '${DB_DATABASE}'
MysqL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sailMysqL:/var/lib/MysqL'
networks:
- sail
healthcheck:
test: ["CMD","MysqLadmin","ping","-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
networks:
sail:
driver: bridge
volumes:
sailMysqL:
driver: local
解决方法
我意识到我的错误。
我应该使用 sail artisan migrate
而不是 php artisan migrate
,正如官方 Laravel Sail documentation 中明确说明的那样。
因此正确的配置是:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=root
FORWARD_DB_PORT=3307
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。