fix: run emdash seed only on first launch via entrypoint.sh

- Remove emdash seed from Dockerfile build stage (no longer overwrites DB)
- Add entrypoint.sh that checks if data.db exists before seeding
- First launch: seed runs to populate DB
- Subsequent redeploys: DB exists, seed skipped, data preserved
- Also remove COPY data.db from runner stage (volume mount handles persistence)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Kunthawat Greethong
2026-04-30 15:00:29 +07:00
parent cdf15f8988
commit f981f1fe4c
2 changed files with 16 additions and 3 deletions

View File

@@ -15,7 +15,7 @@ WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN pnpm build && pnpm exec emdash init && pnpm exec emdash seed && mkdir -p uploads
RUN pnpm build && pnpm exec emdash init && mkdir -p uploads
FROM deps AS runner
@@ -26,8 +26,11 @@ ENV HOST=0.0.0.0
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/data.db ./data.db
COPY --from=builder /app/uploads ./uploads
EXPOSE 4321
CMD ["node", "./dist/server/entry.mjs"]
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

10
entrypoint.sh Normal file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
# Only seed on first launch (when data.db doesn't exist)
if [ ! -f data.db ]; then
echo "Database missing, running emdash init & seed..."
pnpm exec emdash init
pnpm exec emdash seed
else
echo "Database exists, starting normally..."
fi
exec node ./dist/server/entry.mjs