Базовый пакет imagemagick в alpine идёт без кодеков, поэтому magick не мог прочитать jpeg-вложение и падал с "exit status 1". Ставим imagemagick-jpeg, -heic, -webp, -tiff. Чтобы такое было видно из логов: runMagick подставляет stderr в ошибку и отдельно ловит "код выхода 0, но пустой вывод" (так magick ведёт себя без кодека на запись), а веб логирует формат, размеры до и после, время скачивания и ресайза. Если ресайз всё же не удался, отдаём оригинал вместо 502; в кэш не кладём записи больше 4 МБ, чтобы неужатые оригиналы не съели память. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
30 lines
630 B
Docker
30 lines
630 B
Docker
FROM golang:1.26.0-alpine AS build
|
|
|
|
WORKDIR /src
|
|
|
|
COPY go.mod .
|
|
COPY go.sum .
|
|
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
|
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /out/remembos ./cmd/remembos
|
|
|
|
|
|
FROM alpine:3.21
|
|
|
|
# Базовый пакет imagemagick идёт без кодеков: без них magick не читает и не
|
|
# пишет JPEG (а с телефонов приходят ещё HEIC и WebP).
|
|
RUN apk add --no-cache \
|
|
imagemagick \
|
|
imagemagick-jpeg \
|
|
imagemagick-heic \
|
|
imagemagick-webp \
|
|
imagemagick-tiff \
|
|
tzdata
|
|
|
|
COPY --from=build /out/remembos /remembos
|
|
|
|
ENTRYPOINT ["/remembos"]
|