无法从 docker 容器(winter cms、laravel)连接到数据库

问题描述 投票:0回答:1

我有一个冬季 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 地址,但没有帮助。重建容器没有给出任何结果

laravel database docker octobercms
1个回答
0
投票

确保容器和服务已启动并正在运行,然后只需将主机更改为

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

© www.soinside.com 2019 - 2024. All rights reserved.