wip: contenido inicial + test de reusable workflow / composite action
This commit is contained in:
1 parent
e9fe7d0567
commit
262c0f271a
22 files changed
+1480
No files matched your search
@@ -0,0 +1,66 @@
|
||||
# Basado en el Dockerfile real de docs-portal (sitio MkDocs Material).
|
||||
# Mejora respecto al original: nginx corre como usuario NO-root acá
|
||||
# (nginxinc/nginx-unprivileged) -- el docs-portal real del lab todavía
|
||||
# corre nginx:1.27-alpine estándar (como root), un gap real encontrado
|
||||
# al armar este template, pendiente de aplicar al repo real por
|
||||
# separado.
|
||||
#
|
||||
# Este template asume MkDocs -- es el único generador de sitio estático
|
||||
# que existe hoy en el lab. Si tu app usa otro generador (Hugo, Astro,
|
||||
# un build de Vite sin backend), el STAGE 1 es lo único que cambia:
|
||||
# reemplazalo por el build real de tu herramienta, el STAGE 2
|
||||
# (nginx no-root) sirve igual para cualquier sitio 100% estático.
|
||||
#
|
||||
# ARGs:
|
||||
# PYTHON_IMAGE -- versión del builder (solo aplica al ejemplo MkDocs).
|
||||
# NGINX_IMAGE -- versión de nginx no-root.
|
||||
# APP_PORT -- OJO: esto solo cambia el EXPOSE/healthcheck de este
|
||||
# Dockerfile, NO el puerto real en el que nginx
|
||||
# escucha -- eso lo define el nginx.conf que trae la
|
||||
# propia imagen nginx-unprivileged, fijo en 8080. Si
|
||||
# cambiás este ARG a otro valor, tenés que agregar un
|
||||
# nginx.conf propio (COPY) que escuche en ese mismo
|
||||
# puerto, o quedan desalineados. Dejalo en 8080
|
||||
# mientras no necesites tocar nginx.conf.
|
||||
|
||||
# syntax=docker/dockerfile:1.7
|
||||
|
||||
ARG PYTHON_IMAGE=python:3.12-slim
|
||||
ARG NGINX_IMAGE=nginxinc/nginx-unprivileged:1.27-alpine
|
||||
ARG APP_PORT=8080
|
||||
|
||||
# --- Stage 1: build del sitio estático (ejemplo: MkDocs Material) ---
|
||||
FROM ${PYTHON_IMAGE} AS build
|
||||
|
||||
WORKDIR /site
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY mkdocs.yml .
|
||||
COPY docs/ docs/
|
||||
|
||||
# --strict: cualquier link roto o warning de nav rompe el build, para
|
||||
# no publicar nunca un sitio con referencias muertas. Si tu generador
|
||||
# no tiene un equivalente a --strict, considerá agregar un paso de
|
||||
# validación de links aparte (ej. linkinator) antes de este build.
|
||||
RUN mkdocs build --strict
|
||||
|
||||
# --- Stage 2: sirve el sitio estático con nginx, sin root ---
|
||||
FROM ${NGINX_IMAGE}
|
||||
|
||||
ARG APP_PORT
|
||||
# ARG no alcanza para el HEALTHCHECK -- ese CMD corre en runtime, no en
|
||||
# build time, y ahí un ARG ya no existe. Hace falta ENV.
|
||||
ENV APP_PORT=${APP_PORT}
|
||||
|
||||
# CAMBIAR "/site/site" al directorio real de salida de tu build si no
|
||||
# usás MkDocs (ej. "dist/", "public/", "build/", ".output/public/").
|
||||
COPY --from=build /site/site /usr/share/nginx/html
|
||||
|
||||
EXPOSE ${APP_PORT}
|
||||
|
||||
# nginx-unprivileged trae wget (busybox) -- alcanza para un healthcheck
|
||||
# simple sin instalar nada más.
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
||||
CMD wget -q -O /dev/null "http://127.0.0.1:${APP_PORT}/" || exit 1
|
||||
Reference in new issue
Block a user