这是我的 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 应用程序连接到数据库`你的文本``
我看到几个问题。使用docker时,应该使用服务名作为主机。在你的情况下,这将是“db”。因此,在您的 .env 文件中,使用:
DB_HOST=db
您在端口 3307 上公开 MySQL,但标准 MySQL 端口是 3306。将 MySQL 端口更改为 3306
db:
ports:
- 3306:3306
expose:
- "3306"
然后在您的
.env
文件中:
DB_PORT=3306