แƒžแƒแƒขแƒแƒ แƒ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ—แƒแƒ•แƒ˜แƒก แƒกแƒฏแƒ”แƒ แƒแƒ“แƒแƒ—*

[แƒ›แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ แƒแƒ›แƒ”แƒ แƒ˜แƒ™แƒฃแƒšแƒ˜ แƒกแƒแƒ‘แƒแƒ•แƒจแƒ•แƒ แƒ–แƒฆแƒแƒžแƒแƒ แƒ–แƒ” โ€žThe Little Engine That Couldโ€œ - แƒ“แƒแƒแƒฎแƒš. แƒจแƒ”แƒกแƒแƒฎแƒ•แƒ”แƒ•แƒ˜]*

แƒžแƒแƒขแƒแƒ แƒ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ—แƒแƒ•แƒ˜แƒก แƒกแƒฏแƒ”แƒ แƒแƒ“แƒแƒ—*

แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒžแƒแƒขแƒแƒ แƒ Docker แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒแƒ แƒแƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒแƒ™แƒ•แƒ˜แƒแƒขแƒ”แƒ‘แƒ

แƒ‘แƒแƒšแƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒ›แƒ” แƒ•แƒ˜แƒงแƒแƒ•แƒ˜ แƒจแƒ”แƒžแƒงแƒ แƒแƒ‘แƒ˜แƒšแƒ˜ แƒ˜แƒ›แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒžแƒแƒขแƒแƒ แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก Docker แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ›แƒฅแƒแƒœแƒ“แƒ”แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜?

แƒ›แƒ”แƒกแƒ›แƒ˜แƒก, แƒ˜แƒ“แƒ”แƒ แƒฃแƒชแƒœแƒแƒฃแƒ แƒ˜แƒ.

แƒกแƒแƒœแƒแƒ› แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒฃแƒ  แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒก แƒจแƒ”แƒ•แƒ”แƒฎแƒ”แƒ‘แƒ˜, แƒ›แƒกแƒฃแƒ แƒก แƒแƒ’แƒ˜แƒฎแƒกแƒœแƒแƒ—, แƒ แƒแƒขแƒแƒ› แƒ›แƒแƒฌแƒฃแƒฎแƒ”แƒ‘แƒก แƒ”แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒแƒกแƒ” แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ’แƒ”แƒฎแƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœ.

แƒ แƒแƒขแƒแƒ› แƒแƒฅแƒ•แƒก แƒ–แƒแƒ›แƒแƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ

Docker แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒแƒ›แƒ˜แƒ— แƒ•แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒแƒก. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒฉแƒ•แƒ”แƒœ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒก แƒ•แƒแƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”แƒ‘แƒ—, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ›แƒแƒก, แƒ แƒแƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“.

แƒแƒ แƒ˜แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ›แƒชแƒ˜แƒ แƒ” แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ - แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒชแƒแƒขแƒ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ›, แƒฉแƒ”แƒ›แƒ˜ แƒแƒ–แƒ แƒ˜แƒ—, แƒ”แƒก แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ.

แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—: แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ— แƒ–แƒแƒ›แƒ, แƒ—แƒแƒ•แƒแƒ“ แƒแƒšแƒžแƒฃแƒ แƒ˜ แƒ’แƒแƒ แƒ”แƒ’แƒœแƒแƒ‘แƒ แƒžแƒแƒขแƒแƒ แƒแƒ แƒ“แƒ แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“ แƒ›แƒแƒ’แƒ”แƒ แƒ’แƒ”แƒ‘แƒแƒ—.

แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ Distroless แƒ’แƒ•แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ โ€žแƒ“แƒแƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒโ€œ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒก, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ”แƒ‘แƒก, แƒญแƒฃแƒ แƒ•แƒ”แƒ‘แƒก แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ™แƒแƒ›แƒฃแƒœแƒแƒšแƒฃแƒ  แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒœแƒแƒฎแƒ•แƒแƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒฉแƒ•แƒ”แƒฃแƒšแƒ˜ แƒฎแƒแƒ แƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ–แƒ”. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ pip ะธ apt แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก:

FROM gcr.io/distroless/python3
RUN  pip3 install numpy

Dockerfile Python 3-แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM gcr.io/distroless/python3
 ---> 556d570d5c53
Step 2/2 : RUN  pip3 install numpy
 ---> Running in dbfe5623f125
/bin/sh: 1: pip3: not found

แƒžแƒ˜แƒžแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ”

แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ”แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ˜แƒแƒœแƒ˜ แƒแƒ’แƒ”แƒ‘แƒ˜แƒ—:

FROM python:3 as builder
RUN  pip3 install numpy

FROM gcr.io/distroless/python3
COPY --from=builder /usr/local/lib/python3.7/site-packages /usr/local/lib/python3.5/

แƒ›แƒ แƒแƒ•แƒแƒšแƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ˜แƒแƒœแƒ˜ แƒจแƒ”แƒ™แƒ แƒ”แƒ‘แƒ

แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒแƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ 130 แƒ›แƒ‘ แƒ–แƒแƒ›แƒ˜แƒก. แฒแƒ  แƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒชแƒฃแƒ“แƒ˜! แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก: แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ˜แƒฌแƒแƒœแƒ˜แƒก 929 แƒ›แƒ‘-แƒก, แƒฎแƒแƒšแƒ "แƒฃแƒคแƒ แƒ แƒ—แƒฎแƒ”แƒšแƒ˜" (3,7-slim) - 179 แƒ›แƒ‘, แƒแƒšแƒžแƒฃแƒ แƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜ (3,7-alpine) แƒแƒ แƒ˜แƒก 98,6 แƒ›แƒ‘, แƒฎแƒแƒšแƒ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒฃแƒ“แƒ˜แƒกแƒขแƒ แƒแƒšแƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒแƒ แƒ˜แƒก 50,9 แƒ›แƒ‘.

แƒกแƒแƒ›แƒแƒ แƒ—แƒšแƒ˜แƒแƒœแƒ˜แƒ แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ, แƒ แƒแƒ› แƒฌแƒ˜แƒœแƒ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ›แƒ—แƒ”แƒš แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก /usr/local/lib/python3.7/site-packages, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒชแƒฎแƒแƒ“แƒ˜แƒ, แƒ แƒแƒ› แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒ‘แƒแƒ–แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒ–แƒแƒ›แƒ˜แƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ.

แƒฌแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜ Google distroless แƒแƒ  แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก แƒ‘แƒ”แƒ•แƒ  แƒกแƒฃแƒ แƒแƒ—แƒก: Java แƒ“แƒ Python แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒฃแƒš แƒ”แƒขแƒแƒžแƒ–แƒ”แƒ แƒ“แƒ Python แƒ›แƒฎแƒแƒšแƒแƒ“ 2,7 แƒ“แƒ 3,5-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก.

แƒžแƒแƒขแƒแƒ แƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜

แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜ แƒฉแƒ”แƒ›แƒก แƒแƒ™แƒ•แƒ˜แƒแƒขแƒ”แƒ‘แƒแƒก แƒžแƒแƒขแƒแƒ แƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒ—.

แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒ›แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ›แƒ”แƒœแƒแƒฎแƒ, แƒ แƒแƒ’แƒแƒ  แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒฃแƒœแƒแƒงแƒแƒคแƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜. แƒฃแƒกแƒแƒกแƒ แƒฃแƒšแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก Google-แƒ˜แƒก build-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒก bazel. แƒ—แƒฃแƒ›แƒชแƒ, Bazel-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒกแƒ แƒ“แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒแƒก แƒ“แƒ˜แƒ“แƒ˜ แƒจแƒ แƒแƒ›แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ (แƒ“แƒ แƒ›แƒแƒ แƒ—แƒแƒšแƒ˜ แƒ’แƒ˜แƒ—แƒฎแƒ แƒแƒ—, แƒ‘แƒแƒ แƒ‘แƒšแƒ˜แƒก แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒ›แƒแƒ’แƒแƒœแƒ”แƒ‘แƒ แƒกแƒแƒฎแƒแƒšแƒ˜แƒกแƒ แƒ“แƒ แƒกแƒแƒ’แƒแƒœแƒ›แƒแƒœแƒแƒ—แƒšแƒ”แƒ‘แƒšแƒแƒ). แƒ›แƒ” แƒ›แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒงแƒ แƒžแƒแƒขแƒแƒ แƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ: แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒแƒฅแƒขแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ‘แƒแƒœแƒแƒšแƒฃแƒ แƒ˜. แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒแƒ  แƒ˜แƒงแƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒฎแƒแƒ–แƒ˜ แƒ™แƒแƒœแƒกแƒแƒšแƒจแƒ˜: ะฟั€ะพัั‚ะพ ัะพะฑั€ะฐั‚ัŒ ะพะฑั€ะฐะท ะดะปั <ะฟั€ะธะปะพะถะตะฝะธะต>.

แƒแƒกแƒ” แƒ แƒแƒ›, แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒชแƒแƒ“แƒ”แƒ—: แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒแƒกแƒ”แƒ—แƒ˜ แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜, scratch. Scratch แƒแƒ แƒ˜แƒก "แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜" แƒกแƒฃแƒ แƒแƒ—แƒ˜, แƒ›แƒแƒกแƒจแƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก, แƒ—แƒฃแƒ›แƒชแƒ แƒ˜แƒก แƒ˜แƒฌแƒแƒœแƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ - แƒ•แƒแƒ˜! - 77 แƒ‘แƒแƒ˜แƒขแƒ˜.

FROM scratch

แƒœแƒแƒ™แƒแƒฌแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ

แƒœแƒแƒ™แƒแƒฌแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒแƒ— แƒ›แƒแƒกแƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜ แƒแƒžแƒแƒ แƒแƒขแƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ Dockerfile-แƒจแƒ˜ (แƒ”แƒก แƒฐแƒ’แƒแƒ•แƒก แƒ›แƒแƒ— แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒแƒก apt แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒœแƒฃแƒšแƒ˜แƒ“แƒแƒœ), แƒแƒœ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ“แƒ”แƒกแƒแƒช Docker แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒขแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒ“แƒ”แƒ‘แƒ. แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒกแƒ แƒฃแƒšแƒแƒ“ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒแƒ— Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜ แƒ“แƒ, แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ’แƒแƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒแƒ— แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒ–แƒแƒ›แƒ.

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ แƒแƒ’แƒแƒ แƒ›แƒ” แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒแƒ’แƒ แƒแƒ•แƒแƒ— แƒ”แƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ apt แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒ˜แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒแƒ แƒ˜แƒแƒœ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒ, แƒ‘แƒแƒšแƒแƒก แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, แƒแƒ  แƒฃแƒญแƒ”แƒ แƒ”แƒœ แƒ›แƒฎแƒแƒ แƒก Windows แƒแƒœ MacOS.

แƒแƒกแƒ” แƒ แƒแƒ›, แƒ›แƒ” แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜ แƒฉแƒ”แƒ›แƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒชแƒ˜แƒ แƒ” แƒ–แƒแƒ›แƒ˜แƒก แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒกแƒฃแƒ แƒแƒ—แƒก แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒฃแƒจแƒ•แƒ”แƒ‘แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก. แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ” Ubuntu/Debian แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜, แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ” แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜ (แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ) แƒ“แƒ แƒ แƒ”แƒ™แƒฃแƒ แƒกแƒ˜แƒฃแƒšแƒแƒ“ แƒ•แƒ˜แƒžแƒแƒ•แƒ” แƒ›แƒแƒ—แƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒ› แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒฃแƒœแƒ“แƒ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒ แƒแƒช แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒแƒ“ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ“แƒ”แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒกแƒ™แƒ”แƒ‘แƒ˜.

แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒก แƒ“แƒแƒ•แƒแƒ แƒฅแƒ•แƒ˜แƒ— fetchy, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก... แƒžแƒแƒฃแƒšแƒแƒ‘แƒก แƒ“แƒ แƒ›แƒแƒแƒฅแƒ•แƒก... แƒ แƒแƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ [แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ แƒ˜แƒ“แƒแƒœ "แƒ›แƒแƒขแƒแƒœแƒ", "แƒ›แƒแƒขแƒแƒœแƒ" - แƒ“แƒแƒแƒฎแƒš. แƒจแƒ”แƒกแƒแƒฎแƒ•แƒ”แƒ•แƒ˜]. แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— API-แƒก.

แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒฌแƒงแƒแƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— fetchy (แƒแƒ›แƒฏแƒ”แƒ แƒแƒ“ แƒแƒ•แƒ˜แƒฆแƒแƒ— แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜), แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— CLI แƒแƒกแƒ”: fetchy dockerize python. แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒ”แƒ—แƒฎแƒแƒ•แƒแƒ— แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ“แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ fetchy แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ Debian-แƒกแƒ แƒ“แƒ Ubuntu-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒš แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒก.

แƒแƒฎแƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ (แƒฉแƒ•แƒ”แƒœแƒก แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒจแƒ˜) แƒ“แƒ แƒ’แƒแƒ›แƒแƒ แƒ˜แƒชแƒฎแƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, Python แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ perl-แƒ–แƒ”, แƒ—แƒฃแƒ›แƒชแƒ แƒ˜แƒก แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Perl-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ”แƒ‘แƒ˜

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ fetchy dockerize python3.5 แƒ˜แƒฌแƒแƒœแƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ 35 แƒ›แƒ‘ (แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒแƒ , แƒ แƒแƒ› แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒคแƒ แƒ แƒ›แƒกแƒฃแƒ‘แƒฃแƒฅแƒ˜ แƒ’แƒแƒฎแƒ“แƒ”แƒก). แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ•แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ— แƒ™แƒ˜แƒ“แƒ”แƒ• 15 WW-แƒ˜แƒก แƒ’แƒแƒžแƒแƒ แƒกแƒ•แƒ แƒฃแƒœแƒแƒงแƒแƒคแƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒ“แƒแƒœ.

แƒแƒฅแƒแƒ›แƒ“แƒ” แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒœแƒแƒฎแƒ•แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒฅ.

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ - แƒแƒฅ.

แƒ—แƒฃ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒ™แƒšแƒ˜แƒแƒ—, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ - แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ’แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒ— :) แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜แƒช, แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ แƒกแƒฎแƒ•แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก fetchy-แƒจแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒ–แƒ”, แƒ แƒแƒ—แƒ แƒแƒ  แƒ˜แƒงแƒแƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ˜แƒแƒœแƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ