build(security): образы пинятся по digest

AGENT.md 11.3 требует фиксировать образы по digest: тег в реестре может быть
перезаписан. Закреплены базовые образы Dockerfile (node, golang, alpine) и
образы установщика (caddy, livekit-server). Digest'ы проверены на стенде:
сборка образа и пересоздание LiveKit проходят, caddy тянется по digest.
This commit is contained in:
2026-09-22 20:42:52 +03:00
parent c7446a5d4c
commit 6577c1fb39
2 changed files with 10 additions and 5 deletions
+6 -3
View File
@@ -1,7 +1,10 @@
# Образы пинятся по digest (AGENT.md 11.3): тег может быть перезаписан в
# реестре, digest — нет. Обновление: получить новый digest
# (`docker buildx imagetools inspect <образ>` или Docker Hub API) и заменить.
# syntax=docker/dockerfile:1
# ---------- web ----------
FROM node:24-bookworm-slim AS web
FROM node:24-bookworm-slim@sha256:0e0ff40c39bc087845bfb27465a0df4ea419520094bc35842ff83dd8cbe6f9b6 AS web
WORKDIR /src/web
COPY web/package.json web/package-lock.json ./
RUN npm ci --no-audit --no-fund
@@ -9,7 +12,7 @@ COPY web/ ./
RUN npm run build
# ---------- go ----------
FROM golang:1.27-bookworm AS gobuild
FROM golang:1.27-bookworm@sha256:69a7b9788769bec032d238959b61854e9ae87f57be9029ec04e9885fabf99195 AS gobuild
WORKDIR /src
ARG VERSION=dev
ARG COMMIT=none
@@ -36,7 +39,7 @@ RUN CC=musl-gcc CGO_ENABLED=1 go build \
# ---------- runtime ----------
# База alpine + статический бинарник: образ укладывается в бюджет §9.1
# (<50 MB). Проверка: docs/DECISIONS.md, решение D-007.
FROM alpine:3.20 AS runtime
FROM alpine:3.20@sha256:d9e853e87e55526f6b2917df91a2115c36dd7c696a35be12163d44e6e2a4b6bc AS runtime
RUN addgroup -S -g 10001 glchat \
&& adduser -S -u 10001 -G glchat -h /app -s /sbin/nologin glchat \