dockerizing Laravel + vue。我遇到数据库连接问题 SQLSTATE[HY000] [2006] MySQL 服务器已消失

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

这是我的 docker.yml 文件

services:
  web:
    image: app-name:latest
    build:
      target: web
      context: .
    env_file:
      - .env
    ports:
      - "8000:80"
    volumes:
      - .:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8.0
    ports:
      - 3307:3307
    expose:
      - "3307"
    cap_add:
      - SYS_NICE 
    command: --skip-grant-tables
    volumes:
      - ./cache/mysql:/var/lib/mysql
      - ./conf-mysql.cnf:/etc/mysql/conf.d/mysql.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=chat

    restart: unless-stopped

volumes:
  dbdata:



this is my database file config in .env


DB_CONNECTION=mysql
DB_HOST=host.docker.internal
# DB_HOST=db
DB_PORT=3307
DB_DATABASE=chat
DB_USERNAME=root
DB_PASSWORD=password

我也尝试过 db 以及 host.docker.internal。 但无法解决这个问题

your text

SQLSTATE[HY000] [2006] MySQL 服务器已经消失

我想将我的 Docter 应用程序连接到数据库`你的文本``

laravel dockerfile inertiajs
1个回答
0
投票

我看到几个问题。使用docker时,应该使用服务名作为主机。在你的情况下,这将是“db”。因此,在您的 .env 文件中,使用:

DB_HOST=db

您在端口 3307 上公开 MySQL,但标准 MySQL 端口是 3306。将 MySQL 端口更改为 3306

db:
  ports:
    - 3306:3306
  expose:
    - "3306"

然后在您的

.env
文件中:

DB_PORT=3306
© www.soinside.com 2019 - 2024. All rights reserved.