Add dev/prod environments with TrueNAS Docker production deploy.
Split PostgreSQL into gallery_dev and gallery_prod, add Docker/Gitea deploy tooling, SMB image sync, pgAdmin split script, dev:web on Keenetic :5173, and operator docs. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
02d238b043
commit
2edf577faf
@@ -0,0 +1,46 @@
|
||||
# Production image for Gallery (Express API + built Vite SPA).
|
||||
# Build from repository root:
|
||||
# docker build -f infra/docker/Dockerfile -t gitea.mysuperlab.netcraze.pro/danilka/gallery-web:latest .
|
||||
|
||||
FROM node:20-alpine AS deps
|
||||
WORKDIR /app
|
||||
COPY package.json package-lock.json ./
|
||||
COPY client/package.json client/package-lock.json ./client/
|
||||
RUN npm ci --omit=dev
|
||||
WORKDIR /app/client
|
||||
RUN npm ci
|
||||
|
||||
FROM node:20-alpine AS builder
|
||||
WORKDIR /app
|
||||
COPY package.json package-lock.json ./
|
||||
COPY client/package.json client/package-lock.json ./client/
|
||||
COPY --from=deps /app/node_modules ./node_modules
|
||||
COPY --from=deps /app/client/node_modules ./client/node_modules
|
||||
COPY server ./server
|
||||
COPY scripts ./scripts
|
||||
COPY db ./db
|
||||
COPY client ./client
|
||||
RUN npm run build --prefix client
|
||||
|
||||
FROM node:20-alpine AS runner
|
||||
ENV NODE_ENV=production
|
||||
ENV PORT=5173
|
||||
ENV HOST=0.0.0.0
|
||||
ENV IMAGE_DIR=/app/data/images
|
||||
|
||||
RUN addgroup --system --gid 1001 nodejs \
|
||||
&& adduser --system --uid 1001 --ingroup nodejs gallery
|
||||
|
||||
WORKDIR /app
|
||||
COPY package.json package-lock.json ./
|
||||
COPY --from=deps /app/node_modules ./node_modules
|
||||
COPY server ./server
|
||||
COPY scripts ./scripts
|
||||
COPY db ./db
|
||||
COPY --from=builder /app/client/dist ./client/dist
|
||||
RUN mkdir -p /app/data/images && chown -R gallery:nodejs /app
|
||||
|
||||
USER gallery
|
||||
EXPOSE 5173
|
||||
|
||||
CMD ["node", "server/index.js"]
|
||||
Reference in New Issue
Block a user