Sobre o projeto
static-server fornece um servidor HTTP de arquivos pequeno e conteinerizado para sites estáticos e builds de SPA. A imagem é construída a partir do scratch com um binário Go vinculado estaticamente, usa a biblioteca padrão, requer CGO_ENABLED=0 e roda como UID 65534 sem shell, gerenciador de pacotes, libc ou caminhos graváveis em tempo de execução.
As principais capacidades de servir incluem:
- Servir arquivos de SERVE_DIR, com uma cascata opcional de FALLBACK_DIR para padrões embutidos.
- Modo SPA que retorna index.html para rotas de navegação sem extensão, enquanto caminhos de ativos ausentes permanecem como respostas 404.
- Entrega opcional de arquivos .br e .gz irmãos quando o cliente aceita a codificação.
- Um prefixo de cache imutável configurável para ativos com fingerprint, enquanto respostas HTML e de navegação usam no-cache.
- Registro automático de tipos MIME, incluindo application/wasm para arquivos .wasm.
- Apenas GET e HEAD; outros métodos recebem respostas 405.
- Listagens de diretórios desabilitadas, com diretórios exigindo index.html.
- Cabeçalhos de segurança nas respostas e uma configuração opcional de Content-Security-Policy.
O servidor expõe /healthz para verificações de liveness e readiness no Kubernetes, /version para a versão em tempo de build e /llms.txt como referência legível por máquina. Ele trata SIGTERM para encerramento gracioso e o conteúdo pode ser fornecido por meio de um bind mount somente leitura, ConfigMap, emptyDir populado por um initContainer ou outro volume.
A configuração é baseada em variáveis de ambiente, incluindo PORT, SERVE_DIR, FALLBACK_DIR, SPA_FALLBACK, CACHE_IMMUTABLE_PREFIX, CONTENT_SECURITY_POLICY e PRECOMPRESSED. O repositório inclui exemplos de execução com Docker, manifestos de Deployment do Kubernetes, geração de ConfigMap com Kustomize, exemplos de overlay parcial e padrões de initContainer para saída de build ou renderização de templates.
As imagens são publicadas no Quay.io e no Docker Hub com tags latest e versionadas. Builds locais usam Docker, Docker Buildx, Make e Go 1.24 ou mais recente; builds multiplataforma linux/amd64 e linux/arm64 são suportados. Argumentos de build personalizam labels OCI e o template padrão de index.html. O CI executa go vet e testes com race detector habilitado, enquanto a publicação de tags envia imagens multiplataforma. O projeto é lançado sob a licença BSD Zero Clause.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.