Node.js应用程序由于时间问题无法连接到Docker容器中的PostgreSQL?

carvr3hs  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(82)

我有以下问题我正在创建一个简单的应用程序与Node.js和postgresql
停靠文件

FROM node:18-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN yarn install
COPY . .
EXPOSE 3000
CMD [ "yarn", "start" ]

字符串
我打了docker build -t my-app .
它只是工作正常
然后输入docker compose up
使用docker-compose.yml文件

version: '3.8'
services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: password123
      POSTGRES_USER: user123
      POSTGRES_DB: db123
  app:
    image: my-app
    ports:
      - 3333:3000


docker打印database system is ready to accept connections
node.js无法连接数据库
我使用这个命令docker ps检查了正在运行的Docker容器
只有postgres正在运行,我的应用程序状态为Exited(因为它无法连接DB)
然后我用ctrl + c杀了docker
docker compose up
my-app和postgres都运行良好。
我想我的docker有时间问题
如果我添加了`restart:always``选项在应用程序服务中工作正常

app:
    restart: always
    image: my-app
    ports:
      - 3000:3000


但似乎不是一个好的解决方案,我认为...
还有其他解决办法吗?我错过了什么吗
1.添加restart:always option in app service => it works
2.添加依赖项选项但=>不工作

46scxncf

46scxncf1#

在我看来,您可能使用了错误的主机将express.js服务连接到Postgres
Docker-Compose:

version: '3.8'
services:
  postgres_service:
    image: postgres
    environment:
      POSTGRES_PASSWORD: pass
      POSTGRES_USER: user
      POSTGRES_DB: db_name

字符串
连接express.js服务到postgres数据库的主机应为postgres_service
示例如下:

export const AppDataSource = new DataSource({
  type: "postgres",
  host: "postgres_service",
  port: 5432,
  username: "user",
  password: "pass",
  database: "db_name",
  migrations: [],
  entities: [],
  synchronize: false,
  migrationsRun: true,
});

相关问题