mysql - Docker Compose Sql DB 图像连接错误

标签 mysql node.js docker docker-compose sequelize.js

我有一个 docker-compose.yml 文件,我想创建三个容器来运行我的 Node 应用程序:一个客户端、一个服务器、一个包含一些数据的 db 容器。

我在创建 db 容器并将其连接到服务器容器时遇到了麻烦,我使用 sequelize 与 db 连接,但是在 docker-compose up 命令上,我在服务器应用程序启动时出现连接错误:

server_1 | Unable to connect to SQL database: webgrit_superactivation { SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306



这是我的 docker-compose 文件:
version: "3"

services:
  # client
  client:
    image: "ngapp"
    build: "client/dist/."
    ports:
      - "4200:80"
  # Server
  server:
    image: "exapp"
    build: "server/."
    ports:
      - "3000:3000"
    links:
      - db
  # MySQL
  db:
    image: mysql:5.7
    command: mysqld --user=root
    volumes: 
      - ./mysql-dump:/docker-entrypoint-initdb.d
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypass
      MYSQL_DATABASE: mydbname

在 mysql 图像中,我使用 data.sql 转储文件来初始化我的数据库,但是出了点问题

这是我用来连接 mysql db 的服务器容器 dbconfig.js 文件:
CONFIG.db_name = process.env.DB_NAME_DEV || "mydbname";
CONFIG.db_user = process.env.DB_USER_DEV || "myuser";
CONFIG.db_password = process.env.DB_PASSWORD_DEV || "mypass";
CONFIG.db_dialect = process.env.DB_DIALECT_DEV || "mysql";
CONFIG.db_host = process.env.DB_HOST_DEV || "localhost";
CONFIG.db_port = process.env.DB_PORT_DEV || "3306";

这是我的 data.sql 转储文件的开始:
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";

CREATE DATABASE IF NOT EXISTS `mydbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `mydbname`;

CREATE TABLE `users` (
...

编辑:在这里你可以找到一个错误日志:https://github.com/ufollettu/SEANSA/blob/master/docker%20error%20log.log

我对 docker 很陌生,我该如何解决这个问题?
感谢帮助

最佳答案

将主机更改为 DB 服务名称,即 db -
CONFIG.db_host = process.env.DB_HOST_DEV || "db";

关于mysql - Docker Compose Sql DB 图像连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53259723/

相关文章:

ubuntu - CoreOS 中的 docker ubuntu cron 不运行,有趣的行为

bash - Docker osx挂载文件夹为空

c# - 在多个sql表之间进行选择

node.js - 重新加载页面时,用户的登录状态在前端丢失

mysql - 在数据库内部显式设置关系有什么好处

node.js - 防止 Node.js 生产服务器因未知且未处理的异常而崩溃的最佳实践

javascript - GraphQL 关系

python - 将本地目录挂载到Docker Container中

php - mysql 和 php FULLTEXT 搜索做得更多,但做得不多?

php - 如何解决这种表连接?