gpt4 book ai didi

mysql - Docker Compose 连接 ECONNREFUSED 172.18.0.4 :3306

转载 作者:行者123 更新时间:2023-12-02 18:46:24 32 4
gpt4 key购买 nike

当我使用此命令构建项目的容器时:

sudo docker build -t PROJECT_NAME .

然后我通过这个 Docker-Compose 配置下载 mysql 的镜像:
  db:
image: mysql
restart: always
ports:
- "8999:3306"
networks:
- webnet
environment:
MYSQL_DATABASE: slack
MYSQL_ROOT_PASSWORD: admin

然后,项目将通过 Sequelize ORM 与 MySQL 连接

我有这个错误:
Unhandled rejection SequelizeConnectionRefusedError: connect ECONNREFUSED 172.18.0.4:3306

enter image description here

我该如何解决这个问题?

Sequelize 配置是这样的:
const sequelize = new Sequelize(process.env.TEST_DB || 'slack', 'root', 'admin', {
host: process.env.DB_HOST || 'localhost',
operatorsAliases: Sequelize.Op,
dialect: 'mysql',
define: {
underscored: true
}
});

网页的配置是这样的:
web:
image: slack-clone-server
ports:
- "8080:8080"
networks:
- webnet
environment:
DB_HOST: db
REDIS_HOST: redis
command: ["./wait-for-it.sh", "db:3306", "--", "npm", "run", "prod"]

名为“等待”的脚本是 this

如果有人需要完整的代码,请访问:

Sequelize config

Docker Compose config

Dockerfile config

最佳答案

wait-for-it.sh 默认等待 15 seconds 并返回,即使目标尚未准备好。您也可以在输出中看到这一点。但是数据库还没有准备好。使 wait-for-it.sh wait longer ,也许用 -t 90 等待 90 秒或 -t 0 让它永远等待。

(根据我的经验,Docker 数据库容器通常需要 30-60 秒才能启动,尤其是第一次。)

关于mysql - Docker Compose 连接 ECONNREFUSED 172.18.0.4 :3306,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51462200/

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