เดธเตเดตเดฏเด‚ เดตเดฟเดถเตเดตเดธเดฟเดšเตเดš เดšเต†เดฑเดฟเดฏ เดกเต‹เด•เตเด•เตผ เดšเดฟเดคเตเดฐเด™เตเด™เตพ*

[เด…เดฎเต‡เดฐเดฟเด•เตเด•เตป เด•เตเดŸเตเดŸเดฟเด•เดณเตเดŸเต† เดฏเด•เตเดทเดฟเด•เตเด•เดฅเดฏเดพเดฏ "เดฆเดฟ เดฒเดฟเดฑเตเดฑเดฟเตฝ เดŽเดžเตเดšเดฟเตป เดฆเดพเดฑเตเดฑเต เด•เตเตพเดกเต" - เดเด•เดฆเต‡เดถเด‚. เดชเดพเดค]*

เดธเตเดตเดฏเด‚ เดตเดฟเดถเตเดตเดธเดฟเดšเตเดš เดšเต†เดฑเดฟเดฏ เดกเต‹เด•เตเด•เตผ เดšเดฟเดคเตเดฐเด™เตเด™เตพ*

เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดšเต†เดฑเดฟเดฏ เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเตเด•เตพ เดŽเด™เตเด™เดจเต† เดธเตเดตเดฏเดฎเต‡เดต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚

เด…เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เด…เดญเดฟเดจเดฟเดตเต‡เดถเด‚

เด•เดดเดฟเดžเตเดž เดฐเดฃเตเดŸเต เดฎเดพเดธเด™เตเด™เดณเดพเดฏเดฟ, เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเต เดŽเดคเตเดฐ เดšเต†เดฑเตเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเตเด‚ เด‡เดชเตเดชเต‹เดดเตเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเตเด‚ เดžเดพเตป เดถเตเดฐเดฆเตเดงเดพเดฒเตเดตเดพเดฏเดฟเดฐเตเดจเตเดจเต?

เดžเดพเตป เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เด†เดถเดฏเด‚ เดตเดฟเดšเดฟเดคเตเดฐเดฎเดพเดฃเต.

เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดคเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เด•เดŸเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดˆ เดชเตเดฐเดถเตเดจเด‚ เดŽเดจเดฟเด•เตเด•เต เด‡เดคเตเดฐเดฏเดงเดฟเด•เด‚ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดคเต†เดจเตเดจเตเด‚ เด…เดคเต เดจเดฟเด™เตเด™เดณเต† เดŽเด™เตเด™เดจเต† เดฌเดพเดงเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เดตเดฒเดฟเดชเตเดชเด‚ เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต

เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เด•เต‡เดŸเตเดชเดพเดŸเตเด•เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด• เดžเด™เตเด™เตพ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต. เด•เต‚เดŸเดพเดคเต†, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดคเต เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดตเดฏเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณเต‚ เดŽเดจเตเดจเดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เตพ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด•เต‚เดŸเตเดคเตฝ เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณเดคเดพเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดจเต‡เดŸเตเดŸเด‚ เด•เต‚เดŸเดฟเดฏเตเดฃเตเดŸเต - เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด•เตเดฑเดšเตเดšเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เดชเด•เตเดทเต‡, เดŽเดจเตเดฑเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เด‡เดคเต เด…เดคเตเดฐ เดชเตเดฐเดงเดพเดจเดฎเดฒเตเดฒ.

เดฆเดฏเดตเดพเดฏเดฟ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•: เดตเดฒเตเดชเตเดชเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดถเด™เตเด•เดฏเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด†เตฝเดชเตˆเตป เดšเต†เดฑเตเดคเดพเดฏเดฟ เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเด•เตเด‚.

เดกเดฟเดธเตเดŸเตเดฐเต‹เดฒเต†เดธเต เดšเดฟเดคเตเดฐเด™เตเด™เตพ

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดกเดฟเดธเตเดŸเตเดฐเต‹เดฒเต†เดธเต เด…เดŸเดฟเดธเตเดฅเดพเดจ โ€œเดกเดฟเดธเตเดŸเตเดฐเต‹เดฒเต†เดธเตโ€ เด‡เดฎเต‡เดœเตเด•เดณเตเดŸเต† เด’เดฐเต เดจเดฟเดฐ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดตเดฏเดฟเตฝ เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตผเดฎเดพเตผ, เดทเต†เดฒเตเดฒเตเด•เตพ, เด•เดฎเดพเตปเดกเต เดฒเตˆเดจเดฟเตฝ เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจ เดฎเดฑเตเดฑเต เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เตพ เดŽเดจเตเดจเดฟเดต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เดซเดฒเดฎเดพเดฏเดฟ, เดชเต‹เดฒเตเดณเตเดณ เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตผเดฎเดพเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• pip ะธ apt เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ:

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

เดชเตˆเดคเตเดคเตบ 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/

เดฎเตพเดŸเตเดŸเดฟ-เดธเตเดฑเตเดฑเต‡เดœเต เด…เดธเด‚เดฌเตเดฒเดฟ

เดซเดฒเด‚ 130MB เดตเดฒเตเดชเตเดชเดฎเตเดณเตเดณ เด’เดฐเต เดšเดฟเดคเตเดฐเดฎเดพเดฃเต. เดตเดณเดฐเต† เดฎเต‹เดถเดฎเดฒเตเดฒ! เดคเดพเดฐเดคเดฎเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ: เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดชเตˆเดคเตเดคเตบ เด‡เดฎเต‡เดœเดฟเดจเตเดฑเต† เดญเดพเดฐเด‚ 929MB เด†เดฃเต, เด•เต‚เดŸเดพเดคเต† "เดจเต‡เตผเดคเตเดคเดคเต" เด’เดจเตเดจเต (3,7-slim) - 179MB, เด†เตฝเดชเตˆเตป เดšเดฟเดคเตเดฐเด‚ (3,7-alpine) 98,6MB เด†เดฃเต, เด…เดคเต‡เดธเดฎเดฏเด‚ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดกเดฟเดธเตโ€ŒเดŸเตเดฐเต‹เดฒเต†เดธเต เด‡เดฎเต‡เดœเต 50,9MB เด†เดฃเต.

เดฎเตเดฎเตเดชเดคเตเดคเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เด’เดฐเต เดฎเตเดดเตเดตเตป เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเด‚ เดชเด•เตผเดคเตเดคเตเดจเตเดจเต เดŽเดจเตเดจเดคเต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเตเดฏเดพเดฏเดฎเดพเดฃเต /usr/local/lib/python3.7/site-packages, เด…เดคเดฟเตฝ เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดชเตˆเดคเตเดคเตบ เดฌเต‡เดธเต เด‡เดฎเต‡เดœเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดตเดฒเดฟเดชเตเดชเดตเตเดฏเดคเตเดฏเดพเดธเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚.

เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เด—เต‚เด—เดฟเตพ เดกเดฟเดธเตโ€ŒเดŸเตเดฐเต‹เดฒเต†เดธเต เดชเดฒ เดšเดฟเดคเตเดฐเด™เตเด™เดณเต†เดฏเตเด‚ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ: เดœเดพเดตเดฏเตเด‚ เดชเตˆเดคเตเดคเดฃเตเด‚ เด‡เดชเตเดชเต‹เดดเตเด‚ เดชเดฐเต€เด•เตเดทเดฃ เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเดพเดฃเต, เดชเตˆเดคเตเดคเตบ 2,7, 3,5 เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดจเดฟเดฒเดจเดฟเตฝเด•เตเด•เต‚.

เดšเต†เดฑเดฟเดฏ เดšเดฟเดคเตเดฐเด™เตเด™เตพ

เดšเต†เดฑเดฟเดฏ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเตเดณเตเดณ เดŽเดจเตเดฑเต† เดญเตเดฐเดฎเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•.

เดชเตŠเดคเตเดตเต‡, เดกเดฟเดธเตเดŸเตเดฐเต‹เดฒเต†เดธเต เด‡เดฎเต‡เดœเตเด•เตพ เดŽเด™เตเด™เดจเต† เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเตเดตเต†เดจเตเดจเต เด•เดพเดฃเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต. เดกเดฟเดธเตโ€ŒเดŸเตเดฐเต‹เดฒเต†เดธเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด—เต‚เด—เดฟเดณเดฟเดจเตเดฑเต† เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต bazel. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, Bazel เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดœเต‹เดฒเดฟ เดตเต‡เดฃเตเดŸเดฟเดตเดจเตเดจเต (เดธเดคเตเดฏเดธเดจเตเดงเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ, เดšเด•เตเดฐเด‚ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฐเดธเด•เดฐเดตเตเด‚ เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธเดชเดฐเดตเตเดฎเดพเดฃเต). เดšเต†เดฑเดฟเดฏ เด‡เดฎเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต: เด’เดฐเต เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เดจเดฟเดธเตเดธเดพเดฐเดฎเดพเดฏ. เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ, เด•เตบเดธเต‹เดณเดฟเตฝ เด’เดฐเต เดตเดฐเดฟ เดฎเดพเดคเตเดฐเด‚: ะฟั€ะพัั‚ะพ ัะพะฑั€ะฐั‚ัŒ ะพะฑั€ะฐะท ะดะปั <ะฟั€ะธะปะพะถะตะฝะธะต>.

เด…เดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด‡เดฎเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เด…เดฑเดฟเดฏเตเด•: เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เด…เดฆเตเดตเดฟเดคเต€เดฏ เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเต เด‰เดฃเตเดŸเต, scratch. เดธเตโ€Œเด•เตเดฐเดพเดšเตเดšเต เด’เดฐเต โ€œเดถเต‚เดจเตเดฏเดฎเดพเดฏโ€ เดšเดฟเดคเตเดฐเดฎเดพเดฃเต, เด…เดคเดฟเตฝ เดซเดฏเดฒเตเด•เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚ เด…เดคเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดคเต‚เด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต - เด•เตŠเดณเตเดณเดพเด‚! - 77 เดฌเตˆเดฑเตเดฑเตเด•เตพ.

FROM scratch

เดธเตเด•เตเดฐเดพเดšเตเดšเต เด‡เดฎเต‡เดœเต

เด’เดฐเต เดธเตเด•เตเดฐเดพเดšเตเดšเต เด‡เดฎเต‡เดœเดฟเดจเตเดฑเต† เด†เดถเดฏเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดนเต‹เดธเตเดฑเตเดฑเต เดฎเต†เดทเต€เดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดคเต เดกเดฟเดชเตปเดกเตปเดธเดฟเดฏเตเด‚ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเดพเดจเตเด‚ เด’เดจเตเดจเตเด•เดฟเตฝ เด…เดต เด’เดฐเต เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเดฟเดจเตเดณเตเดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ (เด‡เดคเต เด…เดต เดชเด•เตผเดคเตเดคเตเดจเตเดจเดคเต เดชเต‹เดฒเต†เดฏเดพเดฃเต. apt เด†เดฆเตเดฏเด‚ เดฎเตเดคเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•), เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเต เดฏเดพเดฅเดพเตผเดคเตเดฅเตเดฏเดฎเดพเด•เตเดฎเตเดชเต‹เตพ. เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดคเตเดตเดดเดฟ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเด‚ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดŽเด™เตเด™เดจเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดˆ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดชเต‹เดฒเตเดณเตเดณ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ apt เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด…เดต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดฎเต†เดทเต€เดจเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเดฎเตเดชเดฐเดฟ, Windows เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ MacOS เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เด…เดคเดฟเดจเดพเตฝ, เดธเดพเดงเตเดฏเดฎเดพเดฏ เดเดฑเตเดฑเดตเตเด‚ เดšเต†เดฑเดฟเดฏ เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฐเต เด…เดŸเดฟเดธเตเดฅเดพเดจ เด‡เดฎเต‡เดœเต เดธเตเดตเดฏเดฎเต‡เดต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดŽเดจเตเดฑเต† เดธเตเดตเดจเตเดคเด‚ เด‰เดชเด•เดฐเดฃเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เดžเดพเตป เด‰เดฌเตเดฃเตเดŸเต/เดกเต†เดฌเดฟเดฏเตป เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เด’เดฐเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเต เดจเดŸเดคเตเดคเดฟ (เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เดจเต‡เดŸเตเดจเตเดจเต) เด†เดตเตผเดคเตเดคเดฟเดšเตเดšเต เด…เดตเดฏเตเดŸเต† เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ. เดธเตเดฐเด•เตเดทเดพ เด…เดชเด•เดŸเดธเดพเดงเตเดฏเดคเด•เตพ เดชเดฐเดฎเดพเดตเดงเดฟ เด•เตเดฑเดฏเตเด•เตเด•เดฟเด•เตเด•เตŠเดฃเตเดŸเต เดชเดพเด•เตเด•เต‡เดœเดฟเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเต เดฏเดพเดจเตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดฟ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดพเดฃเต.

เดžเดพเตป เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดจเต เดชเต‡เดฐเดฟเดŸเตเดŸเต fetchy, เด•เดพเดฐเดฃเด‚ เด…เดตเตป... เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เด•เตŠเดฃเตเดŸเตเดตเดฐเตเดจเตเดจเต... เดŽเดจเตเดคเดพเดฃเต เดตเต‡เดฃเตเดŸเดคเต [เด‡เด‚เด—เตเดฒเต€เดทเดฟเตฝ เดจเดฟเดจเตเดจเต "เดŽเดŸเตเด•เตเด•เตเด•", " เด•เตŠเดฃเตเดŸเตเดตเดฐเดฟเด•" - เดเด•เดฆเต‡เดถเด‚. เดชเดพเดค]. เด‰เดชเด•เดฐเดฃเด‚ เด’เดฐเต เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเดฒเต‚เดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด…เดคเต‡ เดธเดฎเดฏเด‚ เด’เดฐเต API เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เดพเตป fetchy (เด‡เดคเตเดคเดตเดฃ เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเตˆเดคเตเดคเตบ เด‡เดฎเต‡เดœเต เดŽเดŸเตเด•เตเด•เดพเด‚), เดจเดฟเด™เตเด™เตพ เด‡เดคเตเดชเต‹เดฒเต† CLI เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต: fetchy dockerize python. เดŸเดพเตผเด—เต†เดฑเตเดฑเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดตเตเด‚ เด•เต‹เดกเตเดจเดพเดฎเดตเตเด‚ เดจเดฟเด™เตเด™เดณเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดŸเต‡เด•เตเด•เดพเด‚ fetchy เดจเดฟเดฒเดตเดฟเตฝ เดกเต†เดฌเดฟเดฏเตป, เด‰เดฌเตเดฃเตเดŸเต เดŽเดจเตเดจเดฟเดต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต.

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ (เดžเด™เตเด™เดณเตเดŸเต† เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ) เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เด…เดต เด’เดดเดฟเดตเดพเด•เตเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเตˆเดคเตเดคเตบ perl-เดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚ เด‡เดคเต Perl เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดคเต† เดจเดจเตเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต.

เดซเดฒเด™เตเด™เตพ

เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตˆเดคเตเดคเตบ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต fetchy dockerize python3.5 เดญเดพเดฐเด‚ 35MB เดฎเดพเดคเตเดฐเด‚ (เดญเดพเดตเดฟเดฏเดฟเตฝ เด‡เดคเต เด•เต‚เดŸเตเดคเตฝ เดญเดพเดฐเด‚ เด•เตเดฑเดžเตเดžเดคเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต). เดกเดฟเดธเตโ€ŒเดŸเตเดฐเต‹เดฒเต†เดธเต เด‡เดฎเต‡เดœเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดฑเตเดฑเตŠเดฐเต 15 WW เดทเต‡เดตเต เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดžเตเดžเตเดตเต†เดจเตเดจเต เด‡เดคเต เดฎเดพเดฑเตเดจเตเดจเต.

เด‡เดคเตเดตเดฐเต† เดถเต‡เด–เดฐเดฟเดšเตเดš เดŽเดฒเตเดฒเดพ เดšเดฟเดคเตเดฐเด™เตเด™เดณเตเด‚ เด•เดพเดฃเดพเด‚ เด‡เดตเดฟเดŸเต†.

เดชเดฆเตเดงเดคเดฟ - เด‡เดตเดฟเดŸเต†.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดจเดทเตโ€ŒเดŸเดฎเดพเดฏเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด• - เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เดธเดจเตเดคเต‹เดทเดฎเตเดฃเตเดŸเต :) เด…เดคเดฟเดฒเตเดชเดฐเดฟเดฏเดพเดฏเดฟ, เดฎเดฑเตเดฑเต เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตผเดฎเดพเดฐเต† เดซเต†เดšเตเดšเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดžเดพเตป เดจเดฟเดฒเดตเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดฎเตพเดŸเตเดŸเดฟ-เดธเตเดฑเตเดฑเต‡เดœเต เดฌเดฟเตฝเดกเตเด•เดณเตเดŸเต† เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•