feat: add Docker support with deployment scripts and database backup functionality
This commit is contained in:
48
Dockerfile
Normal file
48
Dockerfile
Normal file
@@ -0,0 +1,48 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM node:22-bookworm-slim AS base
|
||||
|
||||
ENV NEXT_TELEMETRY_DISABLED=1 \
|
||||
PNPM_HOME=/pnpm \
|
||||
PATH=/pnpm:$PATH
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN corepack enable && corepack prepare pnpm@10 --activate
|
||||
|
||||
FROM base AS deps
|
||||
|
||||
COPY package.json pnpm-lock.yaml .npmrc ./
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
FROM deps AS build
|
||||
|
||||
ARG NEXT_PUBLIC_SERVER_URL=http://localhost:3000
|
||||
ARG __NEXT_PRIVATE_ORIGIN=http://localhost:3000
|
||||
|
||||
ENV NODE_ENV=production \
|
||||
NEXT_PUBLIC_SERVER_URL=$NEXT_PUBLIC_SERVER_URL \
|
||||
__NEXT_PRIVATE_ORIGIN=$__NEXT_PRIVATE_ORIGIN \
|
||||
DATABASE_URL=file:/app/shared/content.db \
|
||||
PAYLOAD_SECRET=build-time-placeholder \
|
||||
CRON_SECRET=build-time-placeholder \
|
||||
PREVIEW_SECRET=build-time-placeholder
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN pnpm build
|
||||
RUN pnpm prune --prod
|
||||
|
||||
FROM base AS runner
|
||||
|
||||
ENV NODE_ENV=production \
|
||||
HOSTNAME=0.0.0.0 \
|
||||
PORT=3000
|
||||
|
||||
COPY --from=build /app /app
|
||||
|
||||
RUN mkdir -p /app/shared /app/public/media
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
CMD ["pnpm", "start"]
|
||||
Reference in New Issue
Block a user