I am building api server with typescript ,express and Sequelize
.
This is my database
connection class.
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;
}
}
So in my server.ts
, i was calling this
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);
});
So everythings works fine in my local development
But when i try to run it with docker compose
with this config
// 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
This is my Dockerfile.dev
file
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"]
But the problem is when i run docker-compose up --build
I only see these logs
api_1 | Init db
api_1 | start connect
api_1 | Server running in development mode on port 5000
So basiccally there is no response whether sequelize.authenticate()
is success or fail,
just Server running in development mode on port 5000
log out and nothing after all.
Why don't it works inside docker like in the local, any config that i missed?
Thanks
Dockerfile.dev
? – Pyrosiscloud_sql_proxy
, are you? – Polky34.69.33.26
, i doubt that the issue is aboutsequalize
itself, since if i change tomySql
(on different instance) with same config, it works fine. – Munos