diff --git a/Dockerfile b/Dockerfile index e1eb2cf..f4a4eab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 \ diff --git a/deploy/install.sh b/deploy/install.sh index 6df6350..64963f0 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -106,8 +106,10 @@ ENABLE_NFTABLES="${ENABLE_NFTABLES:-true}" ENABLE_SSH_HARDENING="${ENABLE_SSH_HARDENING:-true}" APP_IMAGE="${APP_IMAGE:-glchat:local}" IMAGE_TAG="${IMAGE_TAG:-v0.1.0}" -CADDY_IMAGE_TAG="${CADDY_IMAGE_TAG:-2.10-alpine}" -LIVEKIT_IMAGE_TAG="${LIVEKIT_IMAGE_TAG:-v1.9.7}" +# Тег + digest: реестр может перезаписать тег, digest фиксирует содержимое +# (AGENT.md 11.3). Обновление — заменить digest после проверки образа. +CADDY_IMAGE_TAG="${CADDY_IMAGE_TAG:-2.10-alpine@sha256:4c6e91c6ed0e2fa03efd5b44747b625fec79bc9cd06ac5235a779726618e530d}" +LIVEKIT_IMAGE_TAG="${LIVEKIT_IMAGE_TAG:-v1.9.7@sha256:ee33f59dc8d2fe176db7f2ef74e1b3ec754f29b50b0ae519b3fa893f7b015d07}" MAX_UPLOAD_MB="${MAX_UPLOAD_MB:-}" LOG_LEVEL="${LOG_LEVEL:-info}" SKIP_TLS="${SKIP_TLS:-0}"