Skip to content

Documentación con Docker

Este proyecto está optimizado para ejecutarse en Docker usando una imagen lo más liviana posible.

Características

  • Multi-stage build: Solo los archivos necesarios se copian al contenedor final
  • nginx:alpine: Servidor web ultraliviano (~40MB)
  • Compresión gzip: Archivos CSS y JS comprimidos
  • Cache optimizado: Recursos estáticos cacheados por 7 días
  • Health checks: Monitoreo automático de la salud del contenedor

Requisitos

  • Docker 20.10+
  • Docker Compose 1.29+ (opcional, para usar docker-compose.yml)

Uso

Opción 1: Docker Compose (recomendado)

bash
docker-compose up -d

La documentación estará disponible en http://localhost

Para detener:

bash
docker-compose down

Opción 2: Docker directo

Construir la imagen:

bash
docker build -t docs:latest .

Ejecutar el contenedor:

bash
docker run -d -p 80:80 --name docs docs:latest

Acceder: http://localhost

Detener:

bash
docker stop docs
docker rm docs

Tamaños de imagen

  • Stage 1 (Builder): ~400MB (no se incluye en la imagen final)
  • Stage 2 (Final): ~50-60MB (incluye nginx + archivos generados)

Variables de entorno

  • DOCS_PORT: Puerto del host expuesto (por defecto: 80). El puerto interno del contenedor siempre es 80.

Ejemplos

Usar puerto 3000 en el host:

bash
DOCS_PORT=3000 docker-compose up -d

O con archivo .env:

bash
echo "DOCS_PORT=3000" > .env
docker-compose up -d

Docker directo:

bash
docker run -d -p 3000:80 docs:latest

Acceso: http://localhost:3000

Health checks

El contenedor incluye verificación automática de salud:

  • Intervalo: 30 segundos
  • Timeout: 3 segundos
  • Intentos antes de marcar como unhealthy: 3
  • Período inicial: 5 segundos

Desarrollo

Si necesitas reconstruir sin caché:

bash
docker-compose build --no-cache

Logs

Ver logs en tiempo real:

bash
docker-compose logs -f docs

Publicar en registro (opcional)

bash
docker tag docs:latest tu-registry/docs:latest
docker push tu-registry/docs:latest

Notas

  • Los archivos estáticos se sirven desde /usr/share/nginx/html
  • La configuración de nginx está en /etc/nginx/conf.d/default.conf
  • Los archivos HTML no se cachean (permite actualizaciones)
  • Recursos como JS, CSS, imágenes se cachean 7 días