Skip to content

Commit 50f6beb

Browse files
committed
Update Dockerfile
1 parent c961378 commit 50f6beb

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

dashboard/Dockerfile

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,29 @@
11
# ==============================================================================
2-
# Stage 1: Dependencies - Install production dependencies
2+
# Stage 1: Dependencies - Install production dependencies with build tools
33
# ==============================================================================
4-
FROM node:22-slim AS deps
4+
FROM node:22-alpine AS deps
55

66
WORKDIR /app
77

88
# Install build dependencies for better-sqlite3
9-
RUN apt-get update && apt-get install -y \
10-
python3 \
11-
make \
12-
g++ \
13-
&& rm -rf /var/lib/apt/lists/*
9+
RUN apk add --no-cache python3 make g++
1410

11+
# Install dependencies based on the preferred package manager
1512
COPY package.json package-lock.json* ./
1613

14+
# Use npm ci for faster, more reliable installs
1715
RUN npm ci --only=production && \
1816
npm cache clean --force
1917

2018
# ==============================================================================
2119
# Stage 2: Builder - Build the application
2220
# ==============================================================================
23-
FROM node:22-slim AS builder
21+
FROM node:22-alpine AS builder
2422

2523
WORKDIR /app
2624

27-
# Install build dependencies
28-
RUN apt-get update && apt-get install -y \
29-
python3 \
30-
make \
31-
g++ \
32-
&& rm -rf /var/lib/apt/lists/*
25+
# Install build dependencies for better-sqlite3
26+
RUN apk add --no-cache python3 make g++
3327

3428
# Copy dependencies from deps stage
3529
COPY --from=deps /app/node_modules ./node_modules
@@ -39,14 +33,17 @@ COPY . .
3933
RUN npm ci && \
4034
npm cache clean --force
4135

36+
# Rebuild better-sqlite3 for Alpine
37+
RUN npm rebuild better-sqlite3
38+
4239
# Build Next.js application
4340
ENV NEXT_TELEMETRY_DISABLED=1
4441
ENV NODE_ENV=production
4542

4643
RUN npm run build
4744

4845
# ==============================================================================
49-
# Stage 3: Runner - Minimal production image
46+
# Stage 3: Runner - Use slim debian instead of distroless for better-sqlite3
5047
# ==============================================================================
5148
FROM node:22-slim AS runner
5249

@@ -62,13 +59,16 @@ ENV HOSTNAME="0.0.0.0"
6259
RUN groupadd -g 1001 nodejs && \
6360
useradd -u 1001 -g nodejs nodejs
6461

62+
# Create data directory BEFORE copying files
63+
RUN mkdir -p /app/data && chown -R nodejs:nodejs /app/data
64+
6565
# Copy only necessary files from builder
6666
COPY --from=builder --chown=nodejs:nodejs /app/.next/standalone ./
6767
COPY --from=builder --chown=nodejs:nodejs /app/.next/static ./.next/static
6868
COPY --from=builder --chown=nodejs:nodejs /app/public ./public
6969

70-
# Create data directory for SQLite database
71-
RUN mkdir -p /app/data && chown -R nodejs:nodejs /app/data
70+
# Ensure data directory has correct permissions after copy
71+
RUN chown -R nodejs:nodejs /app/data
7272

7373
USER nodejs
7474

0 commit comments

Comments
 (0)