mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-09-08 03:07:14 +02:00
- Dockerfile: build & install gunicorn wheels - compose: run initdb before start; use `python -m gunicorn` - env: add POSTGRES_* and BookWyrm Redis aliases (BROKER/ACTIVITY/CACHE) + CACHE_URL - vars: add cache URL, DB indices, and URL aliases for Redis Ref: https://chatgpt.com/share/68b7492b-3200-800f-80c4-295bc3233d68
41 lines
1.4 KiB
Django/Jinja
41 lines
1.4 KiB
Django/Jinja
# Build BookWyrm from source (no upstream image available)
|
|
FROM python:3.11-bookworm AS builder
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git build-essential libpq-dev \
|
|
libjpeg-dev zlib1g-dev libxml2-dev libxslt1-dev libffi-dev libmagic-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /src
|
|
# Shallow clone the chosen tag/branch
|
|
RUN git clone --depth=1 --branch "{{ BOOKWYRM_VERSION }}" https://github.com/bookwyrm-social/bookwyrm.git .
|
|
|
|
# Pre-install Python deps to a wheelhouse for faster final image
|
|
RUN pip install --upgrade pip \
|
|
&& pip wheel --wheel-dir /wheels -r requirements.txt \
|
|
&& pip wheel --wheel-dir /wheels gunicorn
|
|
|
|
FROM python:3.11-bookworm
|
|
ENV PYTHONUNBUFFERED=1
|
|
WORKDIR /app
|
|
|
|
# Copy app source and wheels
|
|
COPY --from=builder /src /app
|
|
COPY --from=builder /wheels /wheels
|
|
|
|
# System deps for runtime
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libpq5 curl \
|
|
libjpeg62-turbo zlib1g libxml2 libxslt1.1 libffi8 libmagic1 \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& pip install --no-cache-dir --no-index --find-links=/wheels -r /app/requirements.txt \
|
|
&& pip install --no-cache-dir --no-index --find-links=/wheels gunicorn \
|
|
&& adduser --disabled-password --gecos '' bookwyrm \
|
|
&& mkdir -p /app/data /app/media \
|
|
&& chown -R bookwyrm:bookwyrm /app
|
|
|
|
USER bookwyrm
|
|
|
|
# Gunicorn/Celery are configured by upstream files in repo
|
|
# Ports/healthcheck handled by compose template
|