프로젝트 소개
static-server는 정적 웹사이트와 SPA 빌드를 위한 소형 컨테이너화된 HTTP 파일 서버를 제공합니다. 이미지는 정적으로 링크된 Go 바이너리로 스크래치에서 빌드되며, 표준 라이브러리를 사용하고, CGO_ENABLED=0이 필요하며, 셸, 패키지 관리자, libc 또는 런타임 쓰기 가능 경로 없이 UID 65534로 실행됩니다.
핵심 제공 기능은 다음과 같습니다:
- SERVE_DIR에서 파일 제공, 내장 기본값을 위한 선택적 FALLBACK_DIR 캐스케이드.
- 확장자 없는 내비게이션 경로에 index.html을 반환하는 SPA 모드, 누락된 자산 경로는 404 응답으로 유지.
- 클라이언트가 인코딩을 수락할 때 선택적 형제 .br 및 .gz 전달.
- 지문 처리된 자산을 위한 구성 가능한 불변 캐시 접두사, HTML 및 내비게이션 응답은 no-cache 사용.
- .wasm 파일에 대한 application/wasm을 포함한 자동 MIME 유형 등록.
- GET 및 HEAD만 허용, 다른 메서드는 405 응답 수신.
- 디렉터리 목록 비활성화, 디렉터리는 index.html 필요.
- 응답에 보안 헤더 및 선택적 Content-Security-Policy 설정.
서버는 Kubernetes 활성 및 준비 상태 확인을 위한 /healthz, 빌드 시간 버전을 위한 /version, 기계 판독 가능 참조로 /llms.txt를 노출합니다. SIGTERM을 처리하여 정상 종료하며, 콘텐츠는 읽기 전용 바인드 마운트, ConfigMap, initContainer로 채워진 emptyDir 또는 다른 볼륨을 통해 제공될 수 있습니다.
구성은 환경 변수 기반이며, PORT, SERVE_DIR, FALLBACK_DIR, SPA_FALLBACK, CACHE_IMMUTABLE_PREFIX, CONTENT_SECURITY_POLICY, PRECOMPRESSED를 포함합니다. 저장소에는 Docker 실행 예제, Kubernetes Deployment 매니페스트, Kustomize ConfigMap 생성, 부분 오버레이 예제, 빌드 출력 또는 템플릿 렌더링을 위한 initContainer 패턴이 포함되어 있습니다.
이미지는 최신 및 버전 태그와 함께 Quay.io 및 Docker Hub에 게시됩니다. 로컬 빌드는 Docker, Docker Buildx, Make, Go 1.24 이상을 사용하며, linux/amd64 및 linux/arm64 멀티 플랫폼 빌드가 지원됩니다. 빌드 인수는 OCI 레이블과 기본 index.html 템플릿을 사용자 지정합니다. CI는 go vet 및 race 활성화 테스트를 실행하고, 태그 게시는 멀티 플랫폼 이미지를 푸시합니다. 이 프로젝트는 BSD Zero Clause 라이선스로 배포됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.