mirror of
https://github.com/apidoorman/doorman.git
synced 2026-02-07 09:38:50 -06:00
61 lines
1.9 KiB
Docker
61 lines
1.9 KiB
Docker
# Multi-service image: Python backend (Doorman) + Next.js web client
|
|
# Supports env files via entrypoint; override envs at runtime as needed.
|
|
|
|
FROM python:3.11-slim AS base
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PIP_NO_CACHE_DIR=1
|
|
|
|
# Install Node.js + npm and useful tools
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
nodejs npm curl ca-certificates git \
|
|
&& npm i -g npm@^10 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# Backend dependencies first for better layer caching
|
|
COPY backend-services/requirements.txt /app/backend-services/requirements.txt
|
|
RUN python -m pip install --upgrade pip \
|
|
&& pip install -r /app/backend-services/requirements.txt
|
|
|
|
# Prepare web client dependencies separately for better caching
|
|
WORKDIR /app/web-client
|
|
COPY web-client/package*.json ./
|
|
RUN npm ci --include=dev
|
|
|
|
# Copy backend source only (avoid copying entire repo)
|
|
WORKDIR /app
|
|
COPY backend-services /app/backend-services
|
|
|
|
# Copy web client sources (excluding node_modules via .dockerignore)
|
|
WORKDIR /app/web-client
|
|
COPY web-client/ .
|
|
|
|
# Build web client (Next.js)
|
|
# Build-time args for frontend env (baked into Next.js bundle)
|
|
ARG NEXT_PUBLIC_PROTECTED_USERS=
|
|
ARG NEXT_PUBLIC_GATEWAY_URL=
|
|
|
|
# Build Next.js - domain agnostic, no hardcoded URLs
|
|
RUN echo "export NEXT_PUBLIC_PROTECTED_USERS=${NEXT_PUBLIC_PROTECTED_USERS}" > /tmp/build-env.sh && \
|
|
echo "export NEXT_PUBLIC_GATEWAY_URL=${NEXT_PUBLIC_GATEWAY_URL}" >> /tmp/build-env.sh && \
|
|
echo "export NODE_ENV=production" >> /tmp/build-env.sh && \
|
|
echo "export NEXT_TELEMETRY_DISABLED=1" >> /tmp/build-env.sh && \
|
|
. /tmp/build-env.sh && \
|
|
npm run build && \
|
|
npm prune --omit=dev
|
|
|
|
# Runtime configuration
|
|
WORKDIR /app
|
|
|
|
# Add entrypoint
|
|
COPY docker/entrypoint.sh /app/docker/entrypoint.sh
|
|
RUN chmod +x /app/docker/entrypoint.sh
|
|
|
|
EXPOSE 3001 3000
|
|
|
|
CMD ["/app/docker/entrypoint.sh"]
|