From 4f0b706c28c0acdfa7ffbd028b2ad0fb33131dbc Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 1 Jul 2026 20:05:40 +0200 Subject: [PATCH] docker-compose pre prod (non final) --- .dockerignore | 12 ++++++++++++ .gitignore | 3 +++ Dockerfile | 13 ++++++++++--- docker-compose.prod.yaml | 2 +- frontend/.dockerignore | 3 +++ frontend/Dockerfile | 20 ++++++++++++++++++++ 6 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 .dockerignore create mode 100644 frontend/.dockerignore create mode 100644 frontend/Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d6a183d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,12 @@ +.git +.venv +__pycache__ +*.pyc +.pytest_cache +.idea +.devcontainer +frontend +*.db +.env +.env.* +docker-compose*.yaml diff --git a/.gitignore b/.gitignore index 0f56871..4f24611 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,7 @@ __pycache__/ frontend/node_modules/ frontend/dist/ frontend/.vite/ +.env +.env.* +!.env.example geoip/*.mmdb diff --git a/Dockerfile b/Dockerfile index 11158ac..ff2021e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,23 @@ FROM python:3.14-slim WORKDIR /app - -# Keeps Python from generating .pyc files and turns off output buffering. ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 COPY requirements.txt requirements.txt RUN pip install --no-cache-dir -r requirements.txt -COPY . . +# Backend code only -- the frontend has its own image (frontend/Dockerfile). +COPY bridzik.py app.py ./ +COPY api ./api +COPY db ./db +COPY tests ./tests + +RUN useradd --create-home --uid 1000 appuser \ + && chown -R appuser:appuser /app +USER appuser EXPOSE 5000 + # Serve the ASGI Socket.IO app with uvicorn. CMD ["uvicorn", "api:app", "--host", "0.0.0.0", "--port", "5000"] diff --git a/docker-compose.prod.yaml b/docker-compose.prod.yaml index 2545df7..8b74bba 100644 --- a/docker-compose.prod.yaml +++ b/docker-compose.prod.yaml @@ -25,7 +25,7 @@ services: ENCRYPTION_KEY: ${ENCRYPTION_KEY} GEOIP_DB_PATH: /app/geoip/GeoLite2-Country.mmdb volumes: - - ./geoip:/app/geoip:ro + - /home/tim/docker_volumes/bridzik/:/app/geoip:ro restart: always depends_on: - db diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..a21f178 --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,3 @@ +node_modules +dist +.git diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..99b7b6a --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,20 @@ +# ---- builder: npm ci + vite build ----------------------------------------- +FROM node:22-alpine AS builder + +WORKDIR /app +COPY package.json package-lock.json ./ +RUN npm ci + +COPY . . +RUN npm run build + +# ---- runtime: static files served by nginx --------------------------------- +FROM nginx:1.27-alpine AS runtime + +COPY --from=builder /app/dist /usr/share/nginx/html +# Rendered to /etc/nginx/conf.d/default.conf at container start by the base +# image's docker-entrypoint.sh, substituting ${BACKEND_UPSTREAM} (set via +# compose env, e.g. "backend:5000"). +COPY nginx.conf.template /etc/nginx/templates/default.conf.template + +EXPOSE 80