feat: rebrand Hemmelig to paste.es for cloudhost.es
- Set Spanish as default language with ephemeral/encrypted privacy focus - Translate all user-facing strings and legal pages to Spanish - Replace Norwegian flag with Spanish flag in footer - Remove Hemmelig/terces.cloud links, add cloudhost.es sponsorship - Rewrite PrivacyPage: zero data collection, ephemeral design emphasis - Rewrite TermsPage: Spanish law, RGPD, paste.es/CloudHost.es references - Update PWA manifest, HTML meta tags, package.json branding - Rename webhook headers to X-Paste-Event / X-Paste-Signature - Update API docs title and contact to paste.es / cloudhost.es Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
72
Dockerfile
Normal file
72
Dockerfile
Normal file
@@ -0,0 +1,72 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
# Prisma client generation stage - runs on native architecture to avoid QEMU issues
|
||||
FROM --platform=$BUILDPLATFORM node:25-slim AS prisma-gen
|
||||
WORKDIR /app
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci --ignore-scripts
|
||||
COPY prisma ./prisma
|
||||
COPY prisma.config.ts ./
|
||||
ENV DATABASE_URL="file:/app/database/hemmelig.db"
|
||||
RUN npx prisma generate --schema=prisma/schema.prisma --generator client
|
||||
|
||||
# Build stage
|
||||
FROM node:25-slim AS builder
|
||||
RUN apt-get update && apt-get install -y python3 make g++ openssl ca-certificates && rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /app
|
||||
COPY package.json package-lock.json ./
|
||||
ENV NODE_ENV=development
|
||||
RUN npm ci
|
||||
COPY prisma ./prisma
|
||||
COPY prisma.config.ts ./
|
||||
# Copy pre-generated Prisma client from native build
|
||||
COPY --from=prisma-gen /app/prisma/generated ./prisma/generated
|
||||
COPY api ./api
|
||||
COPY src ./src
|
||||
COPY public ./public
|
||||
COPY index.html tsconfig*.json vite.config.ts tailwind.config.js ./
|
||||
COPY server.ts ./
|
||||
RUN npm run build
|
||||
|
||||
# Production dependencies
|
||||
FROM node:25-slim AS deps
|
||||
RUN apt-get update && apt-get install -y python3 make g++ openssl ca-certificates && rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /app
|
||||
COPY package.json package-lock.json ./
|
||||
COPY --from=builder /app/prisma ./prisma
|
||||
COPY --from=builder /app/prisma.config.ts ./
|
||||
# Copy pre-generated Prisma client from native build
|
||||
COPY --from=prisma-gen /app/prisma/generated ./prisma/generated
|
||||
ENV NODE_ENV=production
|
||||
RUN npm ci --omit=dev --ignore-scripts && \
|
||||
npm rebuild better-sqlite3 && \
|
||||
npm cache clean --force && \
|
||||
rm -rf /root/.npm /tmp/*
|
||||
|
||||
# Final image
|
||||
FROM node:25-slim
|
||||
RUN apt-get update && apt-get install -y wget openssl ca-certificates gosu && rm -rf /var/lib/apt/lists/* && \
|
||||
groupadd -r app && useradd -r -g app -m -d /home/app app
|
||||
WORKDIR /app
|
||||
COPY --from=builder /app/dist ./dist
|
||||
COPY --from=builder /app/server.ts ./
|
||||
COPY --from=builder /app/api ./api
|
||||
COPY --from=builder /app/prisma/schema.prisma ./prisma/schema.prisma
|
||||
COPY --from=builder /app/prisma/migrations ./prisma/migrations
|
||||
COPY --from=builder /app/prisma.config.ts ./
|
||||
COPY --from=deps /app/package.json ./
|
||||
COPY --from=deps /app/node_modules ./node_modules
|
||||
COPY --from=deps /app/prisma/generated ./prisma/generated
|
||||
RUN mkdir -p /app/database /app/uploads && chown -R app:app /app
|
||||
COPY --chown=app:app scripts/docker-entrypoint.sh /app/docker-entrypoint.sh
|
||||
RUN chmod +x /app/docker-entrypoint.sh
|
||||
|
||||
EXPOSE 3000
|
||||
ENV NODE_ENV=production
|
||||
ENV PORT=3000
|
||||
ENV DATABASE_URL=file:/app/database/hemmelig.db
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
|
||||
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/api/health/ready || exit 1
|
||||
|
||||
ENTRYPOINT ["/app/docker-entrypoint.sh"]
|
||||
Reference in New Issue
Block a user