Sobre el proyecto
static-server proporciona un servidor HTTP de archivos pequeño y contenedorizado para sitios web estáticos y compilaciones de SPA. La imagen se construye desde scratch con un binario Go enlazado estáticamente, usa la biblioteca estándar, requiere CGO_ENABLED=0 y se ejecuta como UID 65534 sin shell, gestor de paquetes, libc ni rutas de escritura en tiempo de ejecución.
Las capacidades principales de servicio incluyen:
- Servir archivos desde SERVE_DIR, con una cascada opcional FALLBACK_DIR para valores predeterminados integrados.
- Modo SPA que devuelve index.html para rutas de navegación sin extensión, mientras que las rutas de activos faltantes siguen siendo respuestas 404.
- Entrega opcional de archivos hermanos .br y .gz cuando el cliente acepta la codificación.
- Un prefijo de caché inmutable configurable para activos con huella digital, mientras que las respuestas HTML y de navegación usan no-cache.
- Registro automático de tipos MIME, incluido application/wasm para archivos .wasm.
- Solo GET y HEAD; otros métodos reciben respuestas 405.
- Listados de directorios deshabilitados, y los directorios requieren index.html.
- Encabezados de seguridad en las respuestas y una configuración opcional de Content-Security-Policy.
El servidor expone /healthz para comprobaciones de liveness y readiness de Kubernetes, /version para la versión en tiempo de compilación y /llms.txt como referencia legible por máquinas. Maneja SIGTERM para un apagado ordenado y el contenido puede suministrarse mediante un montaje de solo lectura, ConfigMap, emptyDir poblado por un initContainer u otro volumen.
La configuración se basa en variables de entorno, incluidas PORT, SERVE_DIR, FALLBACK_DIR, SPA_FALLBACK, CACHE_IMMUTABLE_PREFIX, CONTENT_SECURITY_POLICY y PRECOMPRESSED. El repositorio incluye ejemplos de ejecución con Docker, manifiestos de Deployment de Kubernetes, generación de ConfigMap con Kustomize, ejemplos de superposición parcial y patrones de initContainer para salida de compilación o renderizado de plantillas.
Las imágenes se publican en Quay.io y Docker Hub con etiquetas latest y versionadas. Las compilaciones locales usan Docker, Docker Buildx, Make y Go 1.24 o más reciente; se admiten compilaciones multiplataforma linux/amd64 y linux/arm64. Los argumentos de compilación personalizan las etiquetas OCI y la plantilla index.html predeterminada. CI ejecuta go vet y pruebas con detección de condiciones de carrera, mientras que la publicación de etiquetas envía imágenes multiplataforma. El proyecto se publica bajo la licencia BSD Zero Clause.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.