我正在尝试使用
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 启动时都在数据库中创建表。用于配置开发。
您的后端服务将需要一个 .env 文件来设置以下环境变量,并且相同的变量需要位于 docker-compose 文件或 dockerfile 中,因为您从那里运行
npx prisma
。
DATABASE_URL="postgresql://postgres:password@postgres:5432/plannner_db"
.