38 lines
1.9 KiB
Docker
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://git.huveme.com/esetheyers/caudal" \
|
|
org.opencontainers.image.url="https://git.huveme.com/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"]
|