0596f1d9c1
Sweeps README, docs/, example configs, code docstrings, report and notification subject lines, plugin catalog URL default, and stray comments in Dockerfile/entrypoint.sh/.gitignore. Adds a legacy note to docs/core/configuration.md explaining the FABLEDSCRYER_* fallback. docker-compose DB credentials intentionally left as fabledscryer to preserve the existing pgdata volume.
38 lines
1.1 KiB
Docker
38 lines
1.1 KiB
Docker
FROM python:3.13-slim
|
|
|
|
RUN DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
iputils-ping \
|
|
# NUT (Network UPS Tools) — only used when NUT_MANAGED=1
|
|
nut \
|
|
nut-client \
|
|
# gosu — minimal privilege-drop tool used by entrypoint.sh
|
|
gosu \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Upgrade pip to suppress the version notice
|
|
RUN pip install --upgrade pip
|
|
|
|
WORKDIR /app
|
|
|
|
COPY pyproject.toml .
|
|
COPY roundtable/ roundtable/
|
|
RUN pip install --no-cache-dir .
|
|
|
|
COPY alembic.ini .
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
# Runtime directories — owned by app user.
|
|
# The container runs as root so the entrypoint can start NUT daemons (USB
|
|
# access requires root); it drops to 'app' (uid 1000) via gosu before
|
|
# launching roundtable.
|
|
RUN useradd -m -u 1000 app \
|
|
&& mkdir -p /data/playbook_cache /data/plugins \
|
|
&& chown -R app:app /data /app
|
|
|
|
EXPOSE 5000
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
CMD ["roundtable", "--host", "0.0.0.0", "--port", "5000"]
|