Я создаю сервер api с машинописным текстом, express и Sequelize
.
Это мой database
класс подключения.
export class Database {
private _sequelize: Sequelize;
private config: DBConfigGroup = dbConfig;
private env = process.env.NODE_ENV as string;
constructor() {
this._sequelize = new Sequelize({
dialect: 'postgres',
database: this.config[this.env].database,
username: this.config[this.env].username,
password: this.config[this.env].password,
host: this.config[this.env].host,
});
}
async connect(): Promise<void> {
try {
console.log('start connect');
await this._sequelize.authenticate();
console.log('Connection has been established successfully.'.green.bold);
} catch (error) {
console.error('Unable to connect to the database:'.red.bold, error);
}
}
async close(): Promise<void> {
try {
await this._sequelize.close();
console.log('Connection has been close successfully.'.red.bold);
} catch (error) {
console.error('Unable to close to the database:'.yellow.bold, error);
}
}
get sequelize(): Sequelize {
return this._sequelize;
}
}
Итак, в моем server.ts
, Я называл это
dotenv.config({
path: './config/environments/config.env',
});
const database = new Database();
console.log('Init db');
database
.connect()
.then(() => {
console.log('success db ininit');
})
.catch((err) => {
console.log('fail db init: ', err);
});
/**
* Server Activation
*/
const server = app.listen(PORT, () => {
console.log(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`.yellow.bold);
});
Так что все работает нормально в моей локальной разработке
Но когда я пытаюсь запустить его с docker compose
с этой конфигурацией
// docker-compose.yml
version: '3.4'
services:
api:
stdin_open: true
tty: true
build:
context: ./api
dockerfile: Dockerfile.dev
ports:
- "5000:5000"
volumes:
- /app/node_modules
- ./api:/app
Это мой Dockerfile.dev
файл
FROM node:alpine
ENV NODE_ENV=development
WORKDIR /app
EXPOSE 5000
COPY package.json package-lock.json* ./
RUN npm install && npm cache clean --force
COPY . .
CMD ["npm", "run", "dev:docker"]
Но проблема в том, что когда я запускаю docker-compose up --build
, я вижу только эти журналы
api_1 | Init db
api_1 | start connect
api_1 | Server running in development mode on port 5000
Итак, как правило, есть нет ответа, является ли sequelize.authenticate()
успешным или неудачным, просто Server running in development mode on port 5000
выйдите из системы и ничего.
Почему не работает внутри docker как в локальном, любой конфигурации, которую я пропустил?
Спасибо