我应该 运行 prisma 在每次应用启动时迁移吗?
Should I run prisma migrate on every app start?
我正在将一个使用 PostgreSQL 和 Prisma 的 NodeJS 项目部署到 Kubernetes。我创建了 Dockerfile
并将 docker 图像构建到 Docker 中心:
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 pods是短暂的,将npx prisma migrate resolve --preview-feature
添加到start
脚本中是否正确,所以每次应用程序启动时,它也会检查数据库?我不认为 运行 和 prisma migrate
一直都很好,但解决方案是什么?
提前致谢!
在这种情况下,我会建议 运行 prisma migrate deploy
在部署应用程序之前 CI/CD 步骤中提到的 here 这样您就不需要执行它在每个启动脚本上,在这种情况下并不理想。
此迁移只需执行一次,即可添加到管道中的预部署步骤中。
我正在将一个使用 PostgreSQL 和 Prisma 的 NodeJS 项目部署到 Kubernetes。我创建了 Dockerfile
并将 docker 图像构建到 Docker 中心:
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 pods是短暂的,将npx prisma migrate resolve --preview-feature
添加到start
脚本中是否正确,所以每次应用程序启动时,它也会检查数据库?我不认为 运行 和 prisma migrate
一直都很好,但解决方案是什么?
提前致谢!
在这种情况下,我会建议 运行 prisma migrate deploy
在部署应用程序之前 CI/CD 步骤中提到的 here 这样您就不需要执行它在每个启动脚本上,在这种情况下并不理想。
此迁移只需执行一次,即可添加到管道中的预部署步骤中。