如何解决我应该在每个应用程序启动时运行prisma migrate吗?
我正在将一个使用 PostgreSQL 和 Prisma 的 NodeJS 项目部署到 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 pods 是短暂的,将 npx prisma migrate resolve --preview-feature
添加到 start
脚本是否正确,因此每次应用程序启动时,它也会检查数据库?我不认为一直运行 prisma migrate
是好的,但解决方案是什么?
提前致谢!
解决方法
在这种情况下,我建议在部署应用程序之前运行 CI/CD 步骤中提到的 here 中提到的 prisma migrate deploy
,这样您就不需要在每个不理想的启动脚本上执行它在这种情况下。
此迁移只需执行一次,即可添加到管道中的预部署步骤。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。