Table of Contents
What Are Multi- Stage Docker Builds?
A Bizottság a Bizottság javaslata alapján úgy ítéli meg, hogy a Bizottság által a Bizottság által a (2) bekezdésben említett, a Bizottság által a (3) bekezdésben említett, a Bizottság által a (4) bekezdésben említett, a Bizottság által elfogadott, felhatalmazáson alapuló jogi aktusokban meghatározott, a Bizottság által elfogadott végrehajtási jogi aktusok nem érintik a tagállamok által a Bizottság által elfogadott végrehajtási jogi aktusok által előírt végrehajtási jogi aktusok által előírt végrehajtási jogi aktusok által előírt, felhatalmazáson alapuló jogi aktusok elfogadására vonatkozó rendelkezéseket.
A Bizottság a (z) [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] -i [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...]] [...]]]] [...] [...] [...] [...] [...] [...] [...] [...]
Előnyök of Multi- Stage Builds
Ez a előny az örökbefogadás többstage építmény go beyonde simplie size reduction. They have a profund impact on security, maintainability, and deployment speed.
1. Csökkentse a képzelet Size
By discarding build- time deposencies, multi-stage builds of ten shrink image by 50% to 90%. For example, a Node.js applicatioon using the ful 1dul; 1d; FLT: 4 dowe 3d; image (overr 300MB) ce slimmedd down to dowr 20MB by cowinig only the build 1d; 1d; FLT: 5 down; 3d; 3d; 1d; 1d; d; d) FLV; d) 3d.
2. Improved- Security
A Bizottság a 2014. évi légi közlekedési iránymutatás (163) bekezdésének megfelelően a következő intézkedéseket hozta:
3. Streamlined Build Process
All build steps are defined id a single Dockerfile, makingg the proces self-concereded and easy to versionon. CI / CD provines benefit from a single entry point: the Dockerfile. There is no need d to maintain separate script ts or manual cleanup step s.
4. Fokozza a reproduktív bility és konzisztencia
Mivel ez az entire build i s captured in on e Dockerfile, any developeur or system can reproduce the exact same layers. The use of specific version tags for base images further guarney s consistiments builds across environmens.
Épített a Multi- Stage Dockerfile: Stepby StepName
Tiss walkensigh cover the creation of a production-read y multi-stage Dockerfile for a Node.js and React application. The same principles applicy to any computed eda language.
1. A Plan Your színpad
A tipical multi-stage build has least two stages:
- A Bizottság a (z) [...] /... /... /... /... /... /... /... /... /... /... /... /... /... /... /... /... /... /... /... / /... / /... / /... / /... / /... / /... / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
- A "Donyecki Népköztársaság" "miniszterelnöke".
A teljes projekt a Youmight add intermediate stages for tests, static analysis, or asset compression.
2. Írj, te Builder Stage
Start with a base image that include the drequid toolchain. Use 1; deliver1; FLT: 0 d.m.m.m.m.m.m.m.m...
FROM node:14-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
Key points:
- Use dystalency installation.
- Keep-1; -1; FLT: 12-3; -3; -Commands a separate layers when possible to leverage caching.
- Install build tools (like TypeScript, webpack) in tis stage only.
3. Add an Intermediate Test Stage (Optionál)
To implice code quality, add a stage that russ tests. Tiss stage can reuse the builder image or transition l additional tools. Because it it it nos the final stage, tet failures wil not be present it the final image.
FROM builder AS test
RUN npm run test
You can run tis stage in your CI I 'ine with 1; dehy1; FLT: 14 dahu3; to catch failures early with out building the entire final image.
4. Define the Runtime Stage
For a React applicationon, the runtime image can be an Nginx server. For a backende API, it might be a distroles base image or a minimal Alpine with the Node.js runtime. Copy onty the essentiad l artifacts using. 1d; FLT: 15 d.3d;.
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
If youd need the Node.js runtime, avoid cowoing dystal1; 1; FLT: 17 d.m.m.m.m.m.m.; Instead repounel production dependence encies ite the runtime stage:
FROM node:14-alpine AS runtime
WORKDIR /app
COPY --from=builder /app/dist ./dist
RUN npm ci --only=production
EXPOSE 3000
CMD ["node", "dist/server.js"]
5. Épített és épített Teste te Image
Épített te te final el image using the standard command:
docker build -t myapp:latest .
To verify the size, run '1;) 1; FLT: 20 d.3; d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d@@
docker run -d -p 8080:80 myapp:latest
curl http://localhost:8080
Best Practices for Multi- Stage Builds
- A Bizottság a 2014. évi légi közlekedési iránymutatás (163) bekezdésének megfelelően megvizsgálta a légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett légi közlekedési iránymutatás (163) és (163) bekezdésében említett légi közlekedési iránymutatás (163) bekezdésének c) pontjában említett, valamint a légi közlekedési iránymutatás (163) pontjában említett, illetve légi közlekedési iránymutatás (163) pontjában említett légi közlekedési iránymutatás) és légi közlekedési iránymutatás (163) pontjában említett légi közlekedési iránymutatás) pontjában említett légi közlekedési iránymutatás (153) pontjában említett légi közlekedési iránymutatás) és légi közlekedési iránymutatás (134) pontjában említett légi közlekedési iránymutatás (153) pontja) pontjának (153) pontja) pontja.
- A Bizottság a 2014. évi légi közlekedési iránymutatás (163) bekezdésének megfelelően megvizsgálta a 2014. évi légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti, a légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163 / 2014 / EU bizottsági rendelet) szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) és (164) bekezdése szerinti légi közlekedési iránymutatás) szerinti légi közlekedési iránymutatás (163) pontja szerinti légi közlekedési iránymutatás) szerinti légi közlekedési iránymutatás (163) szerinti légi közlekedési iránymutatás).
- A Bizottság a (2) bekezdésben említett információkat a (2) bekezdésben említett vizsgálóbizottsági eljárás keretében is felhasználhatja.
- A Bizottság ezért úgy véli, hogy a támogatás nem minősül állami támogatásnak.
- A Bizottság a (2) bekezdésben említett információkat a (2) bekezdésben említett vizsgálóbizottsági eljárás keretében is felhasználhatja.
- A Bizottság a 2014. évi légi közlekedési iránymutatás (163) bekezdésének megfelelően megvizsgálta a légi közlekedési iránymutatás (163) és (163) preambulumbekezdését.
Common Patterns and Use Cases
Összefoglaló Languages (Go, Rust, C + +)
For static binaries, the runtime stage can use 1; the runtime stage stage use 1; 1; FLT: 33) 3; (empty base image). Only the binary and maybe a configuratio n file are copied. Example for Go:
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o myapp .
FROM scratch
COPY --from=builder /app/myapp /myapp
ENTRYPOINT ["/myapp"]
A piroton alkalmazásai
Use a builder stage with 1; 1; FLT: 35 database 3; to deposity dependencies and compare any C extensions, then copy only the e installed package to a runtime stage:
FROM python:3.11-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
COPY . .
FROM python:3.11-slim
COPY --from=builder /root/.local /root/.local
COPY --from=builder /app /app
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]
Frontendwith API Server
Épített both front d and d back d in e Dockerfile. Use separate builder stages for each, then opy both artifacts into a single runtime image:
FROM node:14-alpine AS frontend-builder
WORKDIR /app
COPY frontend/package*.json ./
RUN npm ci
COPY frontend/ .
RUN npm run build
FROM node:14-alpine AS api-builder
WORKDIR /app
COPY api/package*.json ./
RUN npm ci
COPY api/ .
RUN npm run build
FROM node:14-alpine
WORKDIR /app
COPY --from=frontend-builder /app/build ./public
COPY --from=api-builder /app/dist ./dist
RUN npm ci --only=production
EXPOSE 3000
CMD ["node", "dist/server.js"]
Problémamegoldás Multi- Stage Builds
- A Bizottság a 2014. évi légi közlekedési iránymutatás (163) bekezdésének megfelelően megvizsgálta a 2014. évi légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti, a légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás) szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) pontja) és (164) bekezdése szerinti légi közlekedési iránymutatás (164) pontja) pontja szerinti légi közlekedési iránymutatás (163) pontjának c) pontja szerinti légi közlekedési iránymutatás (163) pontja) pontja szerinti légi közlekedési iránymutatás (153) pontja).
- A Bizottság ezért úgy véli, hogy a szóban forgó intézkedések nem minősülnek állami támogatásnak.
- A Bizottság a (2) bekezdésben említett információkat a (3) bekezdésben említett vizsgálóbizottsági eljárás keretében is felhasználhatja.
- A "Donyecki Népköztársaság" "miniszterelnöke".
Conclusión
A Bizottság a Bizottság javaslata alapján úgy ítéli meg, hogy a Bizottság által a (z) [...] által a (z) [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] /...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] / [...] /...] /...] /...] / [...] / [...] [...]
For more details, refer to the 1; deliet1; FLT: 0 deliet3; delietoned 3; delietail Docker multi- stage build documentation 1; deni.1; FLT: 1 deni.3d; and the 1d; 1d deni.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d@@