diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4dba253 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,55 @@ +# Documentation +README.md +LICENSE +donate.md +screenshots/ + +# Development files +.github/ +electron/ + +# Build artifacts and cache +public/ +node_modules/ +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# IDE and editor files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Git +.git/ +.gitignore + +# Docker files +Dockerfile* +docker-compose*.yml +.dockerignore + +# Logs +*.log + +# Temporary files +*.tmp +*.temp \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index b5fd3c8..9fe7932 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,11 @@ +# Build arguments +ARG NODE_VERSION=20 +ARG NODE_ALPINE_SHA256=sha256:6a91081a440be0b57336fbc4ee87f3dab1a2fd6f80cdb355dcf960e13bda3b59 +ARG PYTHON_VERSION=3.11 +ARG PYTHON_ALPINE_SHA256=sha256:822ceb965f026bc47ee667e50a44309d2d81087780bbbf64f2005521781a3621 + # Build the frontend -FROM node:20-bookworm-slim AS build-frontend +FROM node:${NODE_VERSION}-alpine@${NODE_ALPINE_SHA256} AS build-frontend WORKDIR /src @@ -13,13 +19,15 @@ RUN npm install --omit=dev && \ npm run build-frontend # Main app build -FROM python:3.11-bookworm +FROM python:${PYTHON_VERSION}-alpine@${PYTHON_ALPINE_SHA256} WORKDIR /app # Install Python deps COPY ./requirements.txt . -RUN pip install -r requirements.txt +RUN apk add --no-cache --virtual .build-deps gcc musl-dev && \ + pip install -r requirements.txt && \ + apk del .build-deps # Copy prebuilt frontend COPY --from=build-frontend /src/public public