diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c761e88 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,18 @@ +node_modules +dist +.git +.gitignore +.env +.env.* +*.md +.vscode +.idea +.DS_Store +.astro +sanity +k8s +.gitea +migrate-images.mjs +seed-sanity.mjs +seed-sanity-homepage.mjs +clean-duplicates.mjs diff --git a/Dockerfile.api b/Dockerfile.api new file mode 100644 index 0000000..4ac8035 --- /dev/null +++ b/Dockerfile.api @@ -0,0 +1,15 @@ +# Fastify API — no build step, runs server.mjs directly +FROM node:22-alpine +WORKDIR /app + +RUN corepack enable && corepack prepare pnpm@latest --activate + +COPY package.json pnpm-lock.yaml ./ +RUN pnpm install --frozen-lockfile --prod + +COPY server.mjs ./ + +ENV NODE_ENV=production +EXPOSE 3000 + +CMD ["node", "server.mjs"] diff --git a/Dockerfile.ssr b/Dockerfile.ssr new file mode 100644 index 0000000..ae9be08 --- /dev/null +++ b/Dockerfile.ssr @@ -0,0 +1,25 @@ +# --- Stage 1: Build Astro SSR --- +FROM node:22-alpine AS build +WORKDIR /app + +RUN corepack enable && corepack prepare pnpm@latest --activate + +COPY package.json pnpm-lock.yaml ./ +RUN pnpm install --frozen-lockfile + +COPY . . +RUN pnpm build + +# --- Stage 2: Runtime --- +FROM node:22-alpine AS runtime +WORKDIR /app + +COPY --from=build /app/dist ./dist +COPY --from=build /app/node_modules ./node_modules +COPY --from=build /app/package.json ./ + +ENV HOST=0.0.0.0 +ENV PORT=4321 +EXPOSE 4321 + +CMD ["node", "dist/server/entry.mjs"]