fix: optimize Dockerfile
CI / test (push) Successful in 1m28s
CI / build (push) Successful in 57s

This commit is contained in:
2026-07-22 13:32:54 +02:00
parent 58df77b286
commit db21129960
5 changed files with 104 additions and 6 deletions
+20 -3
View File
@@ -21,11 +21,28 @@ RUN addgroup -S ${user} && adduser -S ${user} -G ${user} -u ${uid} -s /bin/sh
# poder generar el PDF del patrón (ver PatternPdfView); sin fuentes
# instaladas, Pango no tiene nada que medir/dibujar y WeasyPrint termina
# haciendo segfault en vez de fallar con un error legible.
RUN apk update && apk add gcc gettext vim libpq-dev pango ttf-dejavu
# gettext: msgfmt, para compilemessages en build.sh.
# Sin gcc ni libpq-dev: psycopg[binary] (ver pyproject.toml) trae su propio
# libpq ya compilado dentro de la wheel (hay una para musllinux_x86_64,
# justo lo que necesita esta imagen), así que no hace falta ni compilar
# nada ni que psycopg encuentre una libpq del sistema en tiempo de
# ejecución. Probado a mano (build+run real): "import psycopg" funciona
# sin ninguno de los dos.
RUN apk add --no-cache gettext pango ttf-dejavu
RUN chown -R ${user}:${user} /code
USER ${user}
COPY --chown=${user}:${user} . /code
RUN ["sh", "./scripts/build.sh"]
# libstdc++/libgcc: solo los necesita en tiempo de ejecución el binario de
# Tailwind (ver build_pattern_detail_css, dentro de build.sh) para generar
# pattern-detail.css, no la app en sí; "--virtual" + "apk del" en la misma
# capa para que no se queden en la imagen final (build.sh además borra el
# propio binario de Tailwind al terminar, ver scripts/build.sh). build.sh
# se ejecuta como ${user} (no root), aunque este RUN empiece como root
# para poder instalar/desinstalar el paquete virtual.
RUN apk add --no-cache --virtual .tailwind-runtime libstdc++ libgcc \
&& su ${user} -c "sh ./scripts/build.sh" \
&& apk del .tailwind-runtime
USER ${user}
CMD ["sh", "./scripts/run.sh"]