caudal/Dockerfile
esetheyers cf7cc9a8c7 Caudal 0.1.2
Diseño para móvil, programa de escritorio para Linux (un solo fichero) y versiones firmadas: manifiesto de huellas, firma PGP y la clave del autor (VERIFICAR.md).
2026-10-14 16:42:53 -05:00

38 lines
1.9 KiB
Docker

# Caudal en un contenedor, para un servidor de casa (Start9, Umbrel o Docker a secas).
#
# docker build -t caudal .
# docker run -d --name caudal -p 8080:8080 -v caudal-datos:/data caudal
#
# Todo lo tuyo queda en /data (el volumen): los datos en /data/datos y, a su
# lado, la contraseña de entrada (su huella) y los ajustes. La imagen no
# guarda nada. Se entra con una contraseña que se crea la primera vez.
#
# CAUDAL_CIFRADO=1 cifra los datos en el disco desde el principio (para
# los sistemas que no cifran el disco, como Umbrel)
#
# Si se olvida la contraseña y los datos no van cifrados:
# docker exec caudal python3 -m cartera.acceso --datos /data/datos restablecer
FROM python:3.12-slim
RUN pip install --no-cache-dir "requests>=2.31" "beautifulsoup4>=4.12" "lxml>=4.9" "openpyxl>=3.1" "cryptography>=38"
# UID 1000: el usuario con el que Umbrel monta los datos de las aplicaciones
RUN useradd --uid 1000 --create-home caudal && mkdir -p /data && chown caudal:caudal /data
WORKDIR /app
COPY --chown=caudal:caudal programa/cartera ./cartera
COPY LICENSE AVISO.md ./
USER caudal
LABEL org.opencontainers.image.title="Caudal" \
org.opencontainers.image.description="Tus inversiones y tu bitcoin, llevados en tu casa" \
org.opencontainers.image.authors="esetheyers" \
org.opencontainers.image.licenses="AGPL-3.0-or-later" \
org.opencontainers.image.source="https://codeberg.org/esetheyers/caudal" \
org.opencontainers.image.url="https://codeberg.org/esetheyers/caudal"
ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
VOLUME ["/data"]
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD python3 -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8080/api/salud', timeout=4).status == 200 else 1)"
CMD ["python3", "-m", "cartera.servidor", "--servidor", "0.0.0.0", "--puerto", "8080", "--datos", "/data/datos"]