🟡 Средний · 2 очк. Docker
Как оптимизировать кеширование слоёв при сборке Go-приложения?
A Копировать всё одной командой COPY . .
B Сначала COPY go.mod go.sum и RUN go mod download, затем COPY кода
C Отключить кеширование --no-cache
D Использовать один слой
Объяснение вопроса

Docker кеширует слои по порядку: если изменился один слой, все последующие пересобираются. Нужно копировать то, что меняется реже (зависимости), раньше, а код приложения - позже.

Плохой порядок

COPY . /app
RUN go mod download
RUN go build -o app .
# Любое изменение в коде сбрасывает кеш и заново go mod download + build

Правильный порядок

COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o app .
# Изменение кода пересобирает только COPY . и RUN go build; зависимости берутся из кеша

Так go mod download выполняется заново только при изменении go.mod или go.sum. Сборка после правки кода занимает секунды.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.