Compare commits

..

2 Commits

Author SHA1 Message Date
parsa aghaei
bf60df34ef fix(seed): safely handle blog upsert in try-catch block
All checks were successful
Deploy Canina / deploy (push) Successful in 2m6s
2026-07-29 15:49:39 +03:30
parsa aghaei
84d9ed3a9d perf(docker): replace slow RUN chown -R with fast COPY --chown in backend Dockerfile 2026-07-29 15:48:26 +03:30
2 changed files with 21 additions and 13 deletions

View File

@ -9,14 +9,13 @@ RUN npx prisma generate && npm run build
FROM node:20-alpine
RUN mkdir -p /app/uploads && chown node:node /app/uploads
WORKDIR /app
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/tsconfig.json ./tsconfig.json
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/prisma/tsconfig.seed.json ./prisma/tsconfig.seed.json
COPY --from=builder /app/prisma/scientificTerms.ts ./prisma/scientificTerms.ts
RUN chown -R node:node /app
COPY --chown=node:node --from=builder /app/package*.json ./
COPY --chown=node:node --from=builder /app/tsconfig.json ./tsconfig.json
COPY --chown=node:node --from=builder /app/node_modules ./node_modules
COPY --chown=node:node --from=builder /app/dist ./dist
COPY --chown=node:node --from=builder /app/prisma ./prisma
COPY --chown=node:node --from=builder /app/prisma/tsconfig.seed.json ./prisma/tsconfig.seed.json
COPY --chown=node:node --from=builder /app/prisma/scientificTerms.ts ./prisma/scientificTerms.ts
ENV PRISMA_CLI_BINARY_TARGETS=linux-musl-openssl-3.0.x
EXPOSE 3000
USER node

View File

@ -499,11 +499,20 @@ export async function main() {
];
for (const b of blogs) {
try {
await prisma.blog.upsert({
where: { slug: b.slug },
update: {},
update: {
title: b.title,
content: b.content,
isPublished: b.isPublished,
},
create: b,
});
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
console.warn(`[Seed] Warning upserting blog ${b.slug}:`, msg);
}
}
console.log('Seeded blogs.');
}