mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-09-08 19:27:18 +02:00
feat(bookwyrm): production-ready runtime + Redis wiring
- 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
This commit is contained in:
@@ -12,7 +12,8 @@ RUN git clone --depth=1 --branch "{{ BOOKWYRM_VERSION }}" https://github.com/boo
|
|||||||
|
|
||||||
# Pre-install Python deps to a wheelhouse for faster final image
|
# Pre-install Python deps to a wheelhouse for faster final image
|
||||||
RUN pip install --upgrade pip \
|
RUN pip install --upgrade pip \
|
||||||
&& pip wheel --wheel-dir /wheels -r requirements.txt
|
&& pip wheel --wheel-dir /wheels -r requirements.txt \
|
||||||
|
&& pip wheel --wheel-dir /wheels gunicorn
|
||||||
|
|
||||||
FROM python:3.11-bookworm
|
FROM python:3.11-bookworm
|
||||||
ENV PYTHONUNBUFFERED=1
|
ENV PYTHONUNBUFFERED=1
|
||||||
@@ -28,6 +29,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
libjpeg62-turbo zlib1g libxml2 libxslt1.1 libffi8 libmagic1 \
|
libjpeg62-turbo zlib1g libxml2 libxslt1.1 libffi8 libmagic1 \
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
&& 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 -r /app/requirements.txt \
|
||||||
|
&& pip install --no-cache-dir --no-index --find-links=/wheels gunicorn \
|
||||||
&& adduser --disabled-password --gecos '' bookwyrm \
|
&& adduser --disabled-password --gecos '' bookwyrm \
|
||||||
&& mkdir -p /app/data /app/media \
|
&& mkdir -p /app/data /app/media \
|
||||||
&& chown -R bookwyrm:bookwyrm /app
|
&& chown -R bookwyrm:bookwyrm /app
|
||||||
|
@@ -6,7 +6,8 @@
|
|||||||
bash -lc '
|
bash -lc '
|
||||||
python manage.py migrate --noinput &&
|
python manage.py migrate --noinput &&
|
||||||
python manage.py collectstatic --noinput &&
|
python manage.py collectstatic --noinput &&
|
||||||
gunicorn bookwyrm.wsgi:application --bind 0.0.0.0:{{ container_port }}
|
(python manage.py initdb || true) &&
|
||||||
|
python -m gunicorn bookwyrm.wsgi:application --bind 0.0.0.0:{{ container_port }}
|
||||||
'
|
'
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
|
@@ -22,17 +22,39 @@ EMAIL_HOST_PASSWORD="{{ EMAIL_HOST_PASSWORD }}"
|
|||||||
DEFAULT_FROM_EMAIL="{{ EMAIL_DEFAULT_FROM }}"
|
DEFAULT_FROM_EMAIL="{{ EMAIL_DEFAULT_FROM }}"
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
|
POSTGRES_DB="{{ database_name }}"
|
||||||
|
POSTGRES_USER="{{ database_username }}"
|
||||||
|
POSTGRES_PASSWORD="{{ database_password }}"
|
||||||
|
POSTGRES_HOST="{{ database_host }}"
|
||||||
|
POSTGRES_PORT="{{ database_port }}"
|
||||||
DATABASE_URL="postgres://{{ database_username }}:{{ database_password }}@{{ database_host }}:{{ database_port }}/{{ database_name }}"
|
DATABASE_URL="postgres://{{ database_username }}:{{ database_password }}@{{ database_host }}:{{ database_port }}/{{ database_name }}"
|
||||||
|
|
||||||
# Redis / Celery
|
# Redis / Celery
|
||||||
|
REDIS_HOST="{{ BOOKWYRM_REDIS_HOST }}"
|
||||||
|
REDIS_PORT="{{ BOOKWYRM_REDIS_PORT }}"
|
||||||
|
REDIS_URL="{{ BOOKWYRM_REDIS_CACHE_URL }}"
|
||||||
|
REDIS_CACHE_URL="{{ BOOKWYRM_REDIS_CACHE_URL }}"
|
||||||
|
CACHE_URL="{{ BOOKWYRM_REDIS_CACHE_URL }}"
|
||||||
|
DJANGO_REDIS_URL="{{ BOOKWYRM_REDIS_CACHE_URL }}"
|
||||||
|
|
||||||
|
## Broker
|
||||||
|
BROKER_URL="{{ BOOKWYRM_BROKER_URL }}"
|
||||||
REDIS_BROKER_URL="{{ BOOKWYRM_REDIS_BROKER_URL }}"
|
REDIS_BROKER_URL="{{ BOOKWYRM_REDIS_BROKER_URL }}"
|
||||||
REDIS_CACHE_URL="{{ BOOKWYRM_REDIS_BASE_URL }}/1"
|
REDIS_BROKER_HOST="{{ BOOKWYRM_REDIS_HOST }}"
|
||||||
|
REDIS_BROKER_PORT="{{ BOOKWYRM_REDIS_PORT }}"
|
||||||
|
REDIS_BROKER_DB_INDEX="{{ BOOKWYRM_REDIS_BROKER_DB }}"
|
||||||
CELERY_BROKER_URL="{{ BOOKWYRM_REDIS_BROKER_URL }}"
|
CELERY_BROKER_URL="{{ BOOKWYRM_REDIS_BROKER_URL }}"
|
||||||
|
|
||||||
|
## Activity
|
||||||
|
REDIS_ACTIVITY_HOST="{{ BOOKWYRM_REDIS_HOST }}"
|
||||||
|
REDIS_ACTIVITY_PORT="{{ BOOKWYRM_REDIS_PORT }}"
|
||||||
|
REDIS_ACTIVITY_DB_INDEX="{{ BOOKWYRM_REDIS_ACTIVITY_DB }}"
|
||||||
|
REDIS_ACTIVITY_URL="{{ BOOKWYRM_REDIS_ACTIVITY_URL }}"
|
||||||
|
|
||||||
# Proxy (if BookWyrm sits behind reverse proxy)
|
# Proxy (if BookWyrm sits behind reverse proxy)
|
||||||
FORWARDED_ALLOW_IPS="*"
|
FORWARDED_ALLOW_IPS="*"
|
||||||
USE_X_FORWARDED_HOST="true"
|
USE_X_FORWARDED_HOST="true"
|
||||||
SECURE_PROXY_SSL_HEADER="HTTP_X_FORWARDED_PROTO,{{ WEB_PROTOCOL }}"
|
SECURE_PROXY_SSL_HEADER="{{ (WEB_PORT == 443) | string | lower }}"
|
||||||
|
|
||||||
# OIDC (optional – only if BOOKWYRM_OIDC_ENABLED)
|
# OIDC (optional – only if BOOKWYRM_OIDC_ENABLED)
|
||||||
{% if BOOKWYRM_OIDC_ENABLED %}
|
{% if BOOKWYRM_OIDC_ENABLED %}
|
||||||
|
@@ -45,6 +45,12 @@ BOOKWYRM_REDIS_HOST: "redis"
|
|||||||
BOOKWYRM_REDIS_PORT: 6379
|
BOOKWYRM_REDIS_PORT: 6379
|
||||||
BOOKWYRM_REDIS_BASE_URL: "redis://{{ BOOKWYRM_REDIS_HOST }}:{{ BOOKWYRM_REDIS_PORT }}"
|
BOOKWYRM_REDIS_BASE_URL: "redis://{{ BOOKWYRM_REDIS_HOST }}:{{ BOOKWYRM_REDIS_PORT }}"
|
||||||
BOOKWYRM_REDIS_BROKER_URL: "{{ BOOKWYRM_REDIS_BASE_URL }}/0"
|
BOOKWYRM_REDIS_BROKER_URL: "{{ BOOKWYRM_REDIS_BASE_URL }}/0"
|
||||||
|
BOOKWYRM_REDIS_CACHE_URL: "{{ BOOKWYRM_REDIS_BASE_URL }}/1"
|
||||||
|
BOOKWYRM_REDIS_BROKER_DB: 0
|
||||||
|
BOOKWYRM_REDIS_ACTIVITY_DB: 1
|
||||||
|
BOOKWYRM_BROKER_URL: "{{ BOOKWYRM_REDIS_BROKER_URL }}"
|
||||||
|
BOOKWYRM_REDIS_ACTIVITY_URL: "{{ BOOKWYRM_REDIS_CACHE_URL }}"
|
||||||
|
#BOOKWYRM_CACHE_URL: "{{ BOOKWYRM_REDIS_CACHE_URL }}"
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
EMAIL_HOST: "{{ SYSTEM_EMAIL.HOST }}"
|
EMAIL_HOST: "{{ SYSTEM_EMAIL.HOST }}"
|
||||||
|
Reference in New Issue
Block a user