【发布时间】:2019-04-15 00:43:15
【问题描述】:
我有一个docker-compose.yml 文件,我想创建三个容器来运行我的节点应用程序:一个客户端、一个服务器、一个带有一些数据的数据库容器。
我在创建 db 容器并将其连接到服务器容器时遇到问题,我正在使用 sequelize 连接 db,但是在 docker-compose up 命令上我在服务器应用程序启动时出现连接错误:
server_1 |无法连接到 SQL 数据库: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 很陌生,我该如何解决这个问题? 感谢帮助
【问题讨论】:
标签: mysql node.js docker docker-compose sequelize.js