34 lines
1.9 KiB
Docker
34 lines
1.9 KiB
Docker
# Изменено: 2026-03-23 — v0.1.4: fix go.work (убран replace, добавлен sed rename модуля).
|
|
# Base builder image для Go 1.23 serverless функций.
|
|
# Это 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.3 AS builder
|
|
# WORKDIR /app
|
|
# COPY . /app/handler/
|
|
# RUN [ -f /app/handler/go.mod ] && sed -i 's/^module .*/module sless\/fn\/handler/' || printf '...' > /app/handler/go.mod
|
|
# RUN printf 'go 1.23\n\nuse ./server\nuse ./handler\n' > /app/go.work # БЕЗ replace!
|
|
# RUN printf '\nrequire sless/fn/handler v0.0.0\n' >> /app/server/go.mod
|
|
# RUN CGO_ENABLED=0 go build -o /server ./server
|
|
# FROM alpine:3.20
|
|
# COPY --from=builder /server /server
|
|
#
|
|
# Почему replace убран: Go 1.23 запрещает replace для модуля, который одновременно в workspace.
|
|
# Ошибка: "workspace module sless/fn/handler is replaced at all versions in the go.work file".
|
|
# Решение: handler всегда переименовывается в sless/fn/handler через sed — replace не нужен.
|
|
|
|
FROM golang:1.23-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Копируем mod файлы первыми — отдельный кешируемый слой.
|
|
# При изменении go.mod/go.sum слой инвалидируется и 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/server.go /app/server/server.go
|
|
|
|
EXPOSE 8080
|