TLDR:带有PostgreSQL数据库和sequelize-typescript ORM的NestJs服务器正在开发中(通过在Mac上运行的npm和postgres数据库在本地启动),但在通过docker-compose进行容器化构建和部署时则不会。
到目前为止,我已经在我的database.provider.ts
中解决了问题,通过sequelize-typescript与数据库建立了连接:
export const databaseProviders = [
{
provide: 'SEQUELIZE',
useFactory: async (configService: ConfigService) => {
const sequelize = new Sequelize(configService.sequelizeOrmConfig);
sequelize.addModels([
Model1,
Model2,
Model3,
]);
await sequelize.sync();
return sequelize;
},
inject: [ConfigService],
},];
应用程序容器正在启动:await sequelize.sync();
从那里开始,该应用程序无法进一步启动,因此我想某些东西正在阻止与数据库的连接。当我将这一部分注释掉时,该应用程序正在启动(但是当然没有数据库连接)。当我在开发中本地运行时,它也可以工作。
也许我的docker-compose.yml也与此有关:
version: '3.5'
services:
testname_app:
container_name: testname_app
image: registry.acme.com/test/test
env_file:
- .env
depends_on:
- postgres
links:
- postgres:postgres
networks:
- testname-network
restart: unless-stopped
postgres:
container_name: postgres
image: postgres
env_file: .env
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- testname-network
restart: unless-stopped
networks:
testname-network:
driver: bridge
volumes:
pgdata:
答案 0 :(得分:0)
通过在我的Dockerfile中从FROM node:latest
切换到FROM node:lts
来解决此问题。给我自己的便笺:永远不要从最新中撤出。