663 B35 lines
Blame
1# Grove API Server Dockerfile
2FROM node:22-alpine AS builder
3
4WORKDIR /app
5
6COPY api/package.json api/package-lock.json* ./
7RUN npm install
8
9COPY api/src/ ./src/
10COPY api/tsconfig.json ./
11RUN npm run build
12
13FROM node:22-alpine AS runner
14
15RUN apk add --no-cache docker-cli
16
17WORKDIR /app
18
19COPY --from=builder /app/package.json /app/package-lock.json* ./
20RUN npm install --production
21
22COPY --from=builder /app/dist/ ./dist/
23
24RUN mkdir -p /data
25
26ENV DATABASE_PATH=/data/grove.db
27ENV PORT=4000
28
29EXPOSE 4000
30
31HEALTHCHECK --interval=10s --timeout=3s --start-period=15s --retries=3 \
32 CMD wget -qO- http://127.0.0.1:4000/health || exit 1
33
34CMD ["node", "dist/server.js"]
35