feat(v0.1.58): ImageExists cache hit, timing analysis, in-cluster registry plan

This commit is contained in:
Naeel
2026-03-23 06:22:25 +03:00
parent 7023e0e6fc
commit 9edd43edc5
20 changed files with 596 additions and 515 deletions
+12 -10
View File
@@ -1,18 +1,20 @@
# Изменено: 2026-03-19 — v0.1.1: добавлены go.sum + go mod download (pgx/v5 v5.7.2).
# Изменено: 2026-03-22 — v0.1.3: server/ субдиректория + go.work для поддержки пользовательских go.mod.
# Base builder image для Go 1.23 serverless функций.
# Это BUILDER-образ: golang:1.23-alpine + server.go + pre-cached зависимости.
# Это BUILDER-образ: golang:1.23-alpine + server/ + pre-cached зависимости.
# go mod download кеширует pgx/v5 в /root/go/pkg/mod — kaniko не скачивает их при каждой сборке.
#
# kaniko генерирует Dockerfile для каждой функции:
# FROM naeel/sless-runtime-go1.23:v0.1.1 AS builder
# FROM naeel/sless-runtime-go1.23:v0.1.3 AS builder
# WORKDIR /app
# COPY . /app/handler/
# RUN CGO_ENABLED=0 go build -o /server .
# RUN [ -f /app/handler/go.mod ] || printf 'module sless/fn/handler\n\ngo 1.23\n' > /app/handler/go.mod
# RUN printf 'go 1.23\n\nuse ./server\nuse ./handler\n\nreplace sless/fn/handler => ./handler\n' > /app/go.work
# RUN CGO_ENABLED=0 go build -o /server ./server
# FROM alpine:3.20
# COPY --from=builder /server /server → финальный образ
# COPY --from=builder /server /server
#
# Почему не multi-stage здесь: base образ должен иметь Go компилятор и module cache.
# Бинарник собирается kaniko, а не здесь.
# Почему server/ субдиректория: go.work + replace позволяет пользователю иметь любой go.mod
# с любыми зависимостями. Вложенные модули (nested) поддерживаются через workspace.
FROM golang:1.23-alpine
@@ -20,10 +22,10 @@ WORKDIR /app
# Копируем mod файлы первыми — отдельный кешируемый слой.
# При изменении go.mod/go.sum слой инвалидируется и go mod download запускается заново.
COPY go.mod go.sum /app/
RUN go mod download
COPY server/go.mod server/go.sum /app/server/
RUN cd /app/server && go mod download
# server.go — HTTP-wrapper + job-runner (main package, импортирует sless/fn/handler).
COPY server.go /app/server.go
COPY server/server.go /app/server/server.go
EXPOSE 8080