mysql - 无法用laravel(docker)连接mysql
问题描述
我对 laravel 和 docker 很陌生,并试图将 mysql 连接到 php 容器(laravel)。我想在 laravel 项目中正确设置我的 docker-compose.yml 和 env 文件。
另外,我可以连接到容器内的 mysql db。
这是我执行 php artisan migrate 时出现的错误:
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = myapp and table_name = migrations and table_type = 'BASE TABLE')
谁能知道发生了什么?
码头工人-compose.yml
version: '3'
services:
php:
container_name: php
build: ./docker/php
volumes:
- ./myapp/:/var/www
nginx:
image: nginx:latest
container_name: nginx
ports:
- 80:80
volumes:
- ./myapp/:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
db:
image: mysql:8.0
container_name: db
environment:
MYSQL_ROOT_PASSWORD: root1234
MYSQL_DATABASE: myapp
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ports:
- 3306:3306
环境
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=docker
DB_PASSWORD=docker
解决方案
终于解决了这个问题。我将 .env DB_HOST=127.0.0.1 更改为 DB_HOST=db 然后它的工作!
“ DB_HOST= docker-compose.yml 上 mysql 容器的服务名称”
这次我的mysql容器名称是db,所以需要DB_HOST为db。
推荐阅读
- php - 重定向 Codeigniter 不起作用
- mysql - 如何在反应中添加 MySQL 依赖项?
- angular - 是否可以拦截和读取 Firebase 数据?
- python - 尝试使用 pip install 但出现错误 python3 无法识别
- wix - 如何在“WIX Burn Bootstrapper”中自动升级第三方“可执行包”
- python - Python AttributeError:“str”对象没有属性“decode”
- c++ - C++ dll定义静态成员
- java - 在tomcat中,如何在其他项目中获取类的注释
- ruby-on-rails - 使用 remotipart gem 和 Paperclip 在 Ruby on Rails 中上传图像
- mysql - SQL选择两列组合的最高行