Prisma 找不到 postgres DB

问题描述 投票:0回答:1

我正在尝试使用

docker compose up --build
启动我的项目,但出现错误:
Error: P1001: Can't reach database server at postgres:5432
如果我删除行
RUN npx prisma db push
,那么我可以进入 docker 容器并执行它。并且该应用程序将会工作。我该如何修复该错误?

这是我的 compose.yaml 文件

version: '3.8'

services:
  postgres:
    container_name: ${PROJECT_NAME}-postgres
    image: postgres:latest
    restart: on-failure
    environment:
      PGUSER: ${POSTGRES_USER}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    healthcheck:
      test: pg_isready -U ${POSTGRES_USER} -d $$POSTGRES_DB
      interval: 30s
      timeout: 60s
      retries: 5
      start_period: 80s
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - ${POSTGRES_PORT}:5432
    networks:
      -  max-planner_network

  back:
    container_name: ${PROJECT_NAME}-back
    build:
      context: ./back
      dockerfile: ./docker/${ENV_MODE}/Dockerfile
      args:
        - BACK_PORT=${BACK_PORT}
    restart: on-failure
    volumes:
      - ./back:/project
      - /back/node_modules
    ports:
      - ${BACK_PORT}:4200
    networks:
      -  max-planner_network
    depends_on:
      postgres:
        condition: service_healthy

<-front->

volumes:
  postgres_data:

networks:
  max-planner_network:
    name: ${PROJECT_NAME}_network

这是我的环境文件

# PROJECT ENV
ENV_MODE=dev
PROJECT_NAME=max-planner

#POSTGRES
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_DB=planner_db

# PORTS
BACK_PORT=4200

这是我的后端 dockerfile

FROM node:20.14.0

ARG BACK_PORT

WORKDIR /project

RUN npm install -g yarn -f --silent

COPY package*.json ./

RUN yarn install

COPY . ./

RUN npx prisma db push

EXPOSE ${BACK_PORT}

CMD ["yarn", "start:dev"]

我尝试将命令传输到 package.json 并从那里启动它。但这不起作用。我希望每次 docker 启动时都在数据库中创建表。用于配置开发。

docker docker-compose prisma
1个回答
0
投票

您的后端服务将需要一个 .env 文件来设置以下环境变量,并且相同的变量需要位于 docker-compose 文件或 dockerfile 中,因为您从那里运行

npx prisma

DATABASE_URL="postgresql://postgres:password@postgres:5432/plannner_db"
.

来自 Prisma 文档:https://www.prisma.io/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/connect-your-database-typescript-postgresql

© www.soinside.com 2019 - 2024. All rights reserved.