我在Docker中运行Laravel 5.4 . 这是我的 docker-compose.yml
文件:
version: '2'
services:
app:
container_name: laravel_app
image: webdevops/php-apache-dev:ubuntu-16.04
links:
- mysql
depends_on:
- mysql
ports:
- 8888:80
volumes:
- .:/app
environment:
docker: 'true'
WEB_DOCUMENT_ROOT: '/app/public'
WEB_NO_CACHE_PATTERN: '\.(.*)$$'
working_dir: '/app'
mysql:
image: mariadb:latest
ports:
- 8889:80
environment:
MYSQL_ROOT_PASSWORD: 'dev'
MYSQL_DATABASE: 'dev'
MYSQL_USER: 'dev'
MYSQL_PASSWORD: 'dev'
这是我的 .env
文件的相关部分:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8889
DB_DATABASE=dev
DB_USERNAME=dev
DB_PASSWORD=dev
我能够看到Laravel欢迎页面 - 事情的一面有效 . 但是,当我运行 php artisan migrate
时,我收到此错误:
SQLSTATE [HY000] [2002]连接被拒绝(SQL:select * from information_schema.tables,其中table_schema = dev和table_name = migrations)
我试图摆弄 .env
文件中的 host
和 port
参数 .
2 回答
首先编辑你的
docker-compose.yml
.之后在
.env
中设置正确的DB端口 .您的数据库端口错误 . 您正在尝试连接docker中的公开端口 . 在这种情况下,您应该在
.env
中使用DB_PORT=3306
.如果您不想像在@ kotapeter的答案中那样设置数据库端口,您可以通过运行以下方式通过docker调用artisan:
看着你的
docker-compose.yml
,你的容器可能是laravel_app_app_1
,但你可以通过运行docker ps
来检查