相关疑难解决方法(0)

使用dockers在nodeJS上为Postgres进行ECONNREFUSED

我正在构建一个使用postgresql在NodeJS上运行的应用程序.我正在使用SequelizeJS作为ORM.为了避免使用真正的postgres守护进程并在我自己的设备上安装nodejs,我正在使用带有docker-compose的容器.

当我运行docker-compose up 它时启动pg数据库

database system is ready to accept connections
Run Code Online (Sandbox Code Playgroud)

和nodejs服务器.但是服务器无法连接到数据库.

Error: connect ECONNREFUSED 127.0.01:5432
Run Code Online (Sandbox Code Playgroud)

如果我尝试在不使用容器的情况下运行服务器(在我的机器上使用真正的nodejs和postgresd)它可以工作.

但我希望它与容​​器一起正常工作.我不明白我做错了什么.

这是docker-compose.yml文件

web:
  image: node
  command: npm start
  ports:
    - "8000:4242"
  links:
    - db
  working_dir: /src
  environment:
    SEQ_DB: mydatabase
    SEQ_USER: username
    SEQ_PW: pgpassword
    PORT: 4242
    DATABASE_URL: postgres://username:pgpassword@127.0.0.1:5432/mydatabase
  volumes:
    - ./:/src
db:
  image: postgres
  ports:
  - "5432:5432"
  environment:
    POSTGRES_USER: username
    POSTGRES_PASSWORD: pgpassword
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

(喜欢泊船的人:))

postgresql node.js sequelize.js docker

31
推荐指数
4
解决办法
3万
查看次数

SequelizeConnectionRefusedError:连接ECONNREFUSED 127.0.0.1:3306

我使用 Sequelize 作为我的 Node js 应用程序和 Mysql 数据库的 ORM,在遵循一些教程后,我添加了此代码以将 mysql 连接到节点,但在录制 npm start 后,我​​收到此错误:无法连接到数据库:{ SequelizeConnectionRefusedError :连接ECONNREFUSED 127.0.0.1:3306

 const Sequelize = require('sequelize');

 // Option 1: Passing parameters separately
 const sequelize = new Sequelize('Education', 'root','', {
 host: '127.0.0.1',
 dialect: 'mysql'
 } );

  //test db 
 sequelize
.authenticate()
.then(() => {
  console.log('Connection has been established successfully.');
})
 .catch(err => {
 console.error('Unable to connect to the database:', err);
});
Run Code Online (Sandbox Code Playgroud)

mysql node.js express sequelize.js

6
推荐指数
2
解决办法
4万
查看次数

Docker-SequelizeConnectionRefusedError:连接ECONNREFUSED 127.0.0.1:3306

我正在尝试使用docker容器启动并运行我的nodejs应用程序。我不知道有什么问题。使用控制台调试凭据时,似乎正确传递了凭据。同时启动续集专业版,并使用相同的用户名和密码直接连接似乎可行。当节点在容器中启动时,我收到错误消息:

SequelizeConnectionRefusedError:连接ECONNREFUSED 127.0.0.1:3306

应用程序本身正在端口3000上正确加载,但是没有从数据库中检索到任何数据。如果还尝试将环境变量直接添加到docker compose文件中,但这似乎也不起作用。

我的项目代码托管在这里:https : //github.com/pietheinstrengholt/rssmonster

使用以下database.js配置。当我添加console.log(config)时,将显示.env文件中的正确凭据。

require('dotenv').load();

const Sequelize = require('sequelize');
const fs = require('fs');
const path = require('path');
const env = process.env.NODE_ENV || 'development';
const config = require(path.join(__dirname + '/../config/config.js'))[env];

if (config.use_env_variable) {
  var sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
  var sequelize = new Sequelize(config.database, config.username, config.password, config);
}

module.exports = sequelize;
Run Code Online (Sandbox Code Playgroud)

当我在database.js中执行console.log(config)时,得到以下输出:

{
username: 'rssmonster',
password: 'password',
database: 'rssmonster',
host: 'localhost',
dialect: 'mysql'
}
Run Code Online (Sandbox Code Playgroud)

在.env之后:

DB_HOSTNAME=localhost
DB_PORT=3306
DB_DATABASE=rssmonster
DB_USERNAME=rssmonster
DB_PASSWORD=password
Run Code Online (Sandbox Code Playgroud)

以及以下docker-compose.yml:

version: …
Run Code Online (Sandbox Code Playgroud)

node.js express sequelize.js docker

3
推荐指数
1
解决办法
2464
查看次数

标签 统计

node.js ×3

sequelize.js ×3

docker ×2

express ×2

mysql ×1

postgresql ×1