gpt4 book ai didi

mysql - 在 docker 容器 laravel mysql 中运行迁移文件

转载 作者:行者123 更新时间:2023-11-29 09:37:59 25 4
gpt4 key购买 nike

我有一个 mysql 服务作为 Docker 容器。

这是docker-compose.yml的配置:

version: '3'

networks:
laravel:

services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8080:80"
volumes:
- ./src:/var/www
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- mysql
networks:
- laravel

mysql:
image: mysql:5.7.22
container_name: mysql
restart: unless-stopped
tty: true
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: homestead
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: secret
SERVICE_TAGS: dev
SERVICE_NAME: mysql
networks:
- laravel



php:
build:
context: .
dockerfile: Dockerfile
container_name: php
volumes:
- ./src:/var/www
ports:
- "9000:9000"
networks:
- laravel

以及 Laravel 应用程序内的 .env 文件:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3307
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

我可以从我的主机连接到容器的 mysql:

mysql -uhomestead -p -h localhost -P 3307

showdatabases 上列出了 information_schemahomestead 数据库;

但是当我尝试运行 artisan migrate 命令时,我得到了 enter image description here

我似乎找不到问题所在,因为我一直在关注 this教程。

最佳答案

在我看来,您正在通过外部(主机)端口Nginx连接到MySQL。将 .env 文件编辑为:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

并在docker-compose.yml文件的Nginx服务中添加下面的.env:

  nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8080:80"
volumes:
- ./src:/var/www
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- mysql
env_file:
- ./.env
networks:
- laravel
...

确保 .env 文件位于 docker-compose.yml 所在目录,然后重试。它应该可以工作。

关于mysql - 在 docker 容器 laravel mysql 中运行迁移文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57199494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com