我有一个冬季 cms 项目和 docker compose 设置如下 -
version: '3'
services:
web:
image: nginx:latest
container_name: 12k_nginx_dev
ports:
- 8080:80
environment:
- DB_TYPE=mysql
- DB_HOST=db #DB_HOST should match the service name of the database container
- DB_DATABASE=12k_winter
- DB_USERNAME=root
- DB_PASSWORD=root
- PHP_MEMORY_LIMIT=-1
volumes:
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./app:/var/www/html
php:
build: ./docker/php/
container_name: 12k_php_dev
depends_on:
- db
volumes:
- ./app:/var/www/html
- ./docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
- ./docker/php/conf.d/error_reporting.ini:/usr/local/etc/php/conf.d/error_reporting.ini
links:
- db
environment:
XDEBUG_CONFIG: "remote_host=host.docker.internal remote_enable=1"
PHP_IDE_CONFIG: "serverName=Docker"
db:
image: mariadb:latest
command: --max_allowed_packet=32505856
environment:
MYSQL_ROOT_PASSWORD: 'root'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'root123'
MYSQL_DATABASE: '12k_winter'
volumes:
- $HOME/sites/12knots_winter_new/mysql/data:/var/lib/mysql
ports:
- 3306:3306
#volumes:
# mysqldata: {}
和.env:
DB_CONNECTION=mysql
DB_HOST=db
#DB_HOST="172.18.0.1"
DB_PORT=3306
DB_DATABASE="12k_winter"
DB_USERNAME="root"
DB_PASSWORD="root123"
当我尝试从容器运行 php artisan Winter:up 时,出现这样的错误
问题是我有一个具有完全相同设置的项目,并且它有效。其他 docker 项目工作时不会出现此类错误。
我目前正在调试这个但没有成功(
我尝试将 env DB_HOST 更改为 IP 地址,但没有帮助。重建容器没有给出任何结果
确保容器和服务已启动并正在运行,然后只需将主机更改为
docker-compose
文件中的数据库服务名称
这是db
,它将正常工作。
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE="database_name"
DB_USERNAME="username"
DB_PASSWORD="password"
另外,我建议您在
config/database.php
文件中定义另一个连接并将其命名为 mariadb
,因为您的图像使用的是 MariaDB 上的最新版本,并更改 .env
。
DB_CONNECTION=mysql