backup: 2026-04-17 11:28
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
# Docker — Multistage build (one-screen)
|
||||
|
||||
## 1) Идея
|
||||
**Multistage build** — многоэтапная сборка Docker-образа: сборку делим на этапы (stages) и помечаем их.
|
||||
|
||||
Обычно:
|
||||
- stage 1: “builder” (компиляция, зависимости, tooling)
|
||||
- stage 2: “runtime” (только артефакт + минимальный runtime)
|
||||
|
||||
## 2) Что даёт
|
||||
- **меньше итоговый образ**,
|
||||
- быстрее сборка/доставка (часто),
|
||||
- меньше зависимостей в runtime,
|
||||
- **меньше поверхность атаки**,
|
||||
- можно переиспользовать промежуточные stages.
|
||||
|
||||
## 3) Мини-пример
|
||||
```dockerfile
|
||||
FROM golang:1.22 AS builder
|
||||
WORKDIR /src
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -o app ./cmd/app
|
||||
|
||||
FROM gcr.io/distroless/static
|
||||
COPY --from=builder /src/app /app
|
||||
ENTRYPOINT ["/app"]
|
||||
```
|
||||
|
||||
---
|
||||
**Source:** [[Multistaging - Docker|Multistaging - Docker]]
|
||||
Reference in New Issue
Block a user