Estoy implementando un proyecto NodeJS que usa PostgreSQL con Prisma para Kubernetes. Creé el Dockerfile y estoy creando la imagen de Docker en 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"] Quiero usar CI/CD, por lo que tendría que verificar si PostgreSQL está actualizado. Esto se puede hacer con npx prisma migrate resolve --preview-feature
Pensé en ejecutar siempre la prisma migrate de prisma para verificar si la base de datos está actualizada, ya que si una nueva compilación cambia el schema , la base de datos debería reflejarlo.
Dado que los pods K8S son efímeros, ¿es correcto agregar npx prisma migrate resolve --preview-feature al script de start , de modo que cada vez que se inicie la aplicación, también verifique la base de datos? No creo que ejecutar prisma migrate todo el tiempo sea bueno, pero ¿cuál sería la solución?
¡Gracias por adelantado!
En este caso, sugeriría ejecutar prisma migrate deploy de prisma como se menciona aquí en su paso de CI/CD antes de implementar la aplicación para que no necesite ejecutarla en cada secuencia de comandos de inicio, lo que no es ideal en este caso.
Estas migraciones solo deben ejecutarse una vez y se pueden agregar a su paso previo a la implementación en su canalización.