我应该在每个应用程序启动时运行 prisma migrate 吗?

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

我正在将一个使用 PostgreSQL 和 Prisma 的 Node.js 项目部署到 Kubernetes。我创建了

Dockerfile
并且正在将 docker 镜像构建到 Docker Hub:

FROM node:lts-slim

WORKDIR /app

# Add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
ENV NODE_ENV=production

RUN apt-get update

# Install Chromium
RUN apt-get install chromium -y

# Install yarn
RUN apt-get install yarn -y

COPY package.json /app/package.json
RUN yarn install --silent

# Add app
COPY . /app

# Generate prisma
RUN yarn run generate

# Build the app
RUN yarn build

EXPOSE 4000

# Start the app
CMD ["yarn", "run", "start"]

我想使用 CI/CD,所以我需要检查 PostgreSQL 是否更新。这可以通过

npx prisma migrate resolve --preview-feature

来完成

我想始终运行

prisma migrate
来检查数据库是否已更新,因为如果新版本更改了
schema
,数据库应该反映它。

由于 K8s pod 是短暂的,因此将

npx prisma migrate resolve --preview-feature
添加到
start
脚本中是否正确,以便每次应用程序启动时,它也会检查数据库?我认为一直运行
prisma migrate
不好,但是解决方案是什么?

node.js docker kubernetes prisma
1个回答
6
投票

在这种情况下,我建议在部署应用程序之前在 CI/CD 步骤中运行

prisma migrate deploy
,如here所述,这样您就不需要在每个启动脚本上执行它,这在这种情况下并不理想。

此迁移只需执行一次,并且可以添加到管道中的预部署步骤中。

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