当我尝试运行服务器时,sequelize无法连接到数据库,因此没有创建任何模型。
我的docker-compose
cor2
我的app.js
version: "3.7"
services:
backend:
build: ./Trademon-Backend
environment:
DB_USER: postgres
DB_PASSWORD: postgres
DB_NAME: Trademon
DB_HOST: database
DB_PORT: 5432
DB_DIALECT: postgres
DB_RECREATE: 1 # To recreate database
JWT_SECRET: TrademonSecret
ports:
- "8000:8000"
volumes:
- ./Trademon-Backend:/backend/
- /backend/node_modules/
depends_on:
- database
command: ["./wait-for-it.sh", "database:5432", "--", "nodemon"]
database:
image: postgres:latest
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: Trademon
volumes:
- ~/databases/Trademon:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 30s
timeout: 30s
retries: 3
我的续集配置
const express = require("express");
const path = require("path");
const cookieParser = require("cookie-parser");
const logger = require("morgan");
const passport = require("passport");
const db = require("./models/index").sequelize;
const usersRouter = require("./routes/v1/users");
const app = express();
const RECREATE_DB = !!+process.env.DB_RECREATE || false;
require("./config/passport");
/**
* Passport initialization
*/
app.use(passport.initialize());
/**
* Database connection
*/
console.log("Trying to connect to database...");
try {
db.authenticate();
console.log("Connection to database has been established successfully.");
if (RECREATE_DB) {
console.log("Recreating database!");
db.sync({ force: true });
}
} catch (err) {
console.error("Unable to connect to the database:", err);
}
app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));
app.use("/v1/users", usersRouter);
app.use((req, res) => {
res.status(404).send("Sorry this page does not exist!");
});
module.exports = app;
我没有从db.authenticate()中得到错误,但是什么也没发生,执行继续到下一行(console.logs)。
有帮助吗?
编辑: 这与节点v14不兼容,因此降级到v13或LTS都解决了我的问题。
答案 0 :(得分:0)
停止应用程序:
docker-compose down
清理数据库文件:
rm -rf ~/databases/Trademon/*
然后重新开始:
docker-compose up
,然后还原数据库备份(如果有)。