blob: f5f96d5e13872397e77eefefbf71a5c9286bd3f6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
FROM node:26-slim AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
RUN npm prune --omit=dev
FROM node:26-alpine
WORKDIR /app
COPY --from=builder --chown=node:node /app/build build/
COPY --from=builder --chown=node:node /app/node_modules node_modules/
COPY --from=builder --chown=node:node /app/package.json ./
COPY --from=builder --chown=node:node /app/drizzle drizzle/
COPY --from=builder --chown=node:node /app/scripts/migrate.js scripts/migrate.js
RUN mkdir -p /app/data && chown node:node /app/data
VOLUME /app/data
EXPOSE 3000
ENV NODE_ENV=production
ENV DATABASE_URL=file:./data/data.db
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD node -e "require('http').get('http://localhost:3000/', r => {process.exit(r.statusCode === 200 ? 0 : 1)})"
USER node
CMD ["sh", "-c", "node scripts/migrate.js && node build"]
|