เจ›เฉ‹เจŸเฉ‡ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจœเฉ‹ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจตเจฟเจธเจผเจตเจพเจธ เจ•เจฐเจฆเฉ‡ เจนเจจ*

[เจ…เจฎเจฐเฉ€เจ•เฉ€ เจฌเฉฑเจšเจฟเจ†เจ‚ เจฆเฉ€ เจ•เจนเจพเจฃเฉ€ "เจฆ เจฒเจฟเจŸเจฒ เจ‡เฉฐเจœเจฃ เจฆเฉˆเจŸ เจ•เฉเจก" เจฆเจพ เจนเจตเจพเจฒเจพ โ€” เจŸเฉเจฐเจพเจ‚เจธ. เจจเฉ‹เจŸ]*

เจ›เฉ‹เจŸเฉ‡ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจœเฉ‹ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจตเจฟเจธเจผเจตเจพเจธ เจ•เจฐเจฆเฉ‡ เจนเจจ*

เจ†เจชเจฃเฉ€เจ†เจ‚ เจœเจผเจฐเฉ‚เจฐเจคเจพเจ‚ เจฒเจˆ เจ›เฉ‹เจŸเฉ‡ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ•เจฒเฉ€ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡

เจ‡เฉฑเจ• เจ…เจธเจพเจงเจพเจฐเจจ เจœเจจเฉ‚เฉฐเจจ

เจชเจฟเจ›เจฒเฉ‡ เจ•เฉเจ เจฎเจนเฉ€เจจเจฟเจ†เจ‚ เจคเฉ‹เจ‚, เจฎเฉˆเจ‚ เจ‡เจธ เจตเจฟเจšเจพเจฐ เจจเจพเจฒ เจ—เฉเจฐเจธเจค เจนเจพเจ‚: เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจ•เจฟเฉฐเจจเจพ เจ›เฉ‹เจŸเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ เจตเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ?

เจฎเฉˆเจ‚ เจธเจฎเจเจฆเจพ เจนเจพเจ‚, เจ‡เจน เจตเจฟเจšเจพเจฐ เจ…เจœเฉ€เจฌ เจนเฉˆเฅค

เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจ…เจคเฉ‡ เจคเจ•เจจเฉ€เจ•เฉ€ เจ—เฉฑเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจœเจพเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉˆเจ‚ เจ‡เจน เจฆเฉฑเจธเจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจ•เจฟ เจ‡เจธ เจฎเฉเฉฑเจฆเฉ‡ เจตเจฟเฉฑเจš เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฐเจจเฉ€ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจ•เจฟเจ‰เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ†เจ•เจพเจฐ เจ•เจฟเจ‰เจ‚ เจฎเจพเจ‡เจจเฉ‡ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ

เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจ˜เจŸเจพ เจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจธเจพเจซเจผ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจ‰เจนเฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจ›เฉ‹เจŸเจพ เจซเจพเจ‡เจฆเจพ เจนเฉˆ - เจคเจธเจตเฉ€เจฐเจพเจ‚ เจฅเฉ‹เฉœเฉเจนเฉ€ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจกเจพเจŠเจจเจฒเฉ‹เจก เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจชเจฐ เจฎเฉ‡เจฐเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš เจ‡เจน เจ‡เฉฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจงเจฟเจ†เจจ เจฆเจฟเจ“: เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ†เจ•เจพเจฐ เจฌเจพเจฐเฉ‡ เจšเจฟเฉฐเจคเจค เจนเฉ‹, เจคเจพเจ‚ เจ…เจฒเจชเจพเจˆเจจ เจšเจฟเฉฑเจคเจฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจ›เฉ‹เจŸเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจธเฉฐเจญเจพเจตเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจขเฉเจ•เจตเฉ‡เจ‚ เจนเฉ‹เจฃเจ—เฉ‡เฅค

เจกเจฟเจธเจŸเฉเจฐเฉ‹เจฒเฉˆเฉฑเจธ เจšเจฟเฉฑเจคเจฐ

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจกเจฟเจธเจŸเฉเจฐเฉ‹เจฒเฉˆเฉฑเจธ เจฌเฉเจจเจฟเจ†เจฆเฉ€ "เจกเจฟเจธเจŸเจฐเฉ‹เจฒเฉˆเฉฑเจธ" เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ; เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจœ เจฎเฉˆเจจเฉ‡เจœเจฐ, เจธเจผเฉˆเฉฑเจฒ, เจœเจพเจ‚ เจนเฉ‹เจฐ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เจฃ เจฆเฉ‡ เจ†เจฆเฉ€ เจนเฉ‹เฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจชเฉˆเจ•เฉ‡เจœ เจฎเฉˆเจจเฉ‡เจœเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ 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,6 MB, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ‰เจฆเจพเจนเจฐเจฃ เจตเจฟเฉฑเจš เจตเจฐเจคเฉ€ เจ—เจˆ เจฌเฉ‡เจธ เจกเจฟเจธเจŸเฉเจฐเฉ‹เจฒเฉˆเฉฑเจธ เจคเจธเจตเฉ€เจฐ 50,9 MB เจนเฉˆเฅค

เจ‡เจน เจธเจนเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจฆเฉฑเจธเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจชเจฟเจ›เจฒเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ /usr/local/lib/python3.7/site-packages, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‰เจน เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ€ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ เจ•เจฟ เจธเจพเจฐเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจชเจพเจˆเจฅเจจ เจฌเฉ‡เจธ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ†เจ•เจพเจฐ เจฆเจพ เจ…เฉฐเจคเจฐ เจ‰เจคเจฐเจพเจ…-เจšเฉœเฉเจนเจพเจ… เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ—เฉ‚เจ—เจฒ เจกเจฟเจธเจŸเฉเจฐเฉ‹เจฒเฉˆเจธ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ: เจœเจพเจตเจพ เจ…เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจ…เจœเฉ‡ เจตเฉ€ เจชเฉเจฐเจฏเฉ‹เจ—เจพเจคเจฎเจ• เจนเจจ, เจ…เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจธเจฟเจฐเจซ 2,7 เจ…เจคเฉ‡ 3,5 เจฒเจˆ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆเฅค

เจ›เฉ‹เจŸเฉ‡ เจšเจฟเฉฑเจคเจฐ

เจ†เจ“ เจ›เฉ‹เจŸเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจœเจจเฉ‚เฉฐเจจ เจตเฉฑเจฒ เจตเจพเจชเจธ เจšเฉฑเจฒเฉ€เจเฅค

เจฎเฉˆเจ‚ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจน เจฆเฉ‡เจ–เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€ เจ•เจฟ เจกเจฟเจธเจŸเฉเจฐเฉ‹เจฒเฉˆเฉฑเจธ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจฌเจฃเจคเจฐ เจ•เจฟเจตเฉ‡เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจกเจฟเจธเจŸเฉเจฐเฉ‹เจฒเฉˆเฉฑเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ—เฉ‚เจ—เจฒ เจฆเฉ‡ เจฌเจฟเจฒเจก เจŸเฉ‚เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค bazelเจนเจพเจฒเจพเจ‚เจ•เจฟ, Bazel เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจ†เจชเจฃเฉ€เจ†เจ‚ เจ–เฉเจฆ เจฆเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เฉเจ เจฎเจฟเจนเจจเจค เจ•เจฐเจจเฉ€ เจชเจˆ (เจ…เจคเฉ‡ เจชเฉ‚เจฐเฉ€ เจ‡เจฎเจพเจจเจฆเจพเจฐเฉ€ เจจเจพเจฒ เจ•เจนเจพเจ‚ เจคเจพเจ‚, เจชเจนเฉ€เจ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจ–เฉ‹เจœเจฃเจพ เจฎเจœเจผเฉ‡เจฆเจพเจฐ เจ…เจคเฉ‡ เจตเจฟเจฆเจฟเจ…เจ• เจนเฉˆ)เฅค เจฎเฉˆเจ‚ เจ›เฉ‹เจŸเฉ‡ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจธเจฟเจฐเจœเจฃเจพ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€: เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจ•เฉฐเจฎ เจฌเจนเฉเจค เจธเจฐเจฒ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจฎเจพเจฎเฉ‚เจฒเฉ€เจ‡เจธ เจฒเจˆ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจ•เฉ‹เจˆ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจจเจนเฉ€เจ‚, เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจฒเจพเจˆเจจ: ะฟั€ะพัั‚ะพ ัะพะฑั€ะฐั‚ัŒ ะพะฑั€ะฐะท ะดะปั <ะฟั€ะธะปะพะถะตะฝะธะต>.

เจ‡เจธ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจœเจพเจฃเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจ…เจœเจฟเจนเฉ€ เจตเจฟเจฒเฉฑเจ–เจฃ เจกเฉŒเจ•เจฐ เจคเจธเจตเฉ€เจฐ เจนเฉˆ, scratchเจธเจ•เฉเจฐเฉˆเจš เจ‡เฉฑเจ• "เจ–เจพเจฒเฉ€" เจšเจฟเฉฑเจคเจฐ เจนเฉˆ; เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจซเจพเจˆเจฒเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเจจ, เจญเจพเจตเฉ‡เจ‚ เจ‡เจธเจฆเจพ เจญเจพเจฐ เจกเจฟเจซเจพเจฒเจŸ เจคเฉŒเจฐ 'เจคเฉ‡โ€”เจตเจพเจน!โ€”77 เจฌเจพเจˆเจŸ เจนเฉˆเฅค

FROM scratch

เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจธเจ•เฉเจฐเฉˆเจš เจ•เจฐเฉ‹

เจธเจ•เฉเจฐเฉˆเจš เจ‡เจฎเฉ‡เจœ เจฆเฉ‡ เจชเจฟเฉฑเจ›เฉ‡ เจตเจฟเจšเจพเจฐ เจ‡เจน เจนเฉˆ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจนเฉ‹เจธเจŸ เจฎเจธเจผเฉ€เจจ เจคเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจจเฉ‚เฉฐ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เจพเจชเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจœเจพเจ‚ เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจพเจชเฉ€ เจ•เจฐเจจ เจตเจพเจ‚เจ— เจนเฉˆ apt เจ…เจคเฉ‡ เจธเจ•เฉเจฐเฉˆเจš เจคเฉ‹เจ‚ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹), เจœเจพเจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจตเจพเจฐ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจธเจพเจ•เจพเจฐ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆเฅค เจ‡เจน เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ 'เจคเฉ‡ เจชเฉ‚เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจ†เจ•เจพเจฐ 'เจคเฉ‡ เจชเฉ‚เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจนเฉเจฃ เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ‡เจนเจจเจพเจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจพเจงเจจ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ apt เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉˆเจ•เฉ‡เจœ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ, เจชเจฐ เจ‰เจน เจฎเฉŒเจœเฉ‚เจฆเจพ เจฎเจธเจผเฉ€เจจ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจนเฉ‹เจ เจนเจจ เจ…เจคเฉ‡, เจ…เฉฐเจค เจตเจฟเฉฑเจš, Windows เจœเจพเจ‚ MacOS เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจ†เจชเจฃเจพ เจ–เฉเจฆ เจฆเจพ เจŸเฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจœเฉ‹ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจธเจญ เจคเฉ‹เจ‚ เจ›เฉ‹เจŸเฉ‡ เจธเฉฐเจญเจต เจ†เจ•เจพเจฐ เจฆเจพ เจ‡เฉฑเจ• เจฌเฉ‡เจธ เจ‡เจฎเฉ‡เจœ เจฌเจฃเจพเจเจ—เจพ เจ…เจคเฉ‡ เจซเจฟเจฐ เจตเฉ€ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจšเจฒเจพเจเจ—เจพเฅค เจฎเฉˆเจ‚ เจ‰เจฌเฉฐเจŸเฉ‚/เจกเฉ‡เจฌเฉ€เจ…เจจ เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€, เจ‡เฉฑเจ• เจšเฉ‹เจฃ เจฌเจฃเจพเจˆ (เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจธเจฟเฉฑเจงเฉ‡ เจชเฉˆเจ•เฉ‡เจœ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ), เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจ—เจพเจคเจพเจฐ เจฒเฉฑเจญเจฟเจ†เฅค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจœเฉ‹เจ–เจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจชเฉˆเจ•เฉ‡เจœ เจฆเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจธเจฅเจฟเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจธเฉ€เฅค

เจฎเฉˆเจ‚ เจธเจพเจœเจผ เจฆเจพ เจจเจพเจฎ เจฆเจฟเฉฑเจคเจพ fetchy, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจน... เจฒเฉฑเจญเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฒเจฟเจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ... เจœเจฟเจธเจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ [เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€ "fetch", "to bring" เจคเฉ‹เจ‚ โ€” เจ…เจจเฉเจตเจพเจฆเฅค เจจเฉ‹เจŸ]เฅค เจ‡เจน เจŸเฉ‚เจฒ เจ‡เฉฑเจ• เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจฐเจพเจนเฉ€เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• API เจตเฉ€ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจฒเจˆ fetchy (เจ‡เจธ เจตเจพเจฐ เจชเจพเจˆเจฅเจจ เจšเจฟเฉฑเจคเจฐ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚), เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ CLI เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: fetchy dockerize pythonเจคเฉเจนเจพเจจเฉ‚เฉฐ เจŸเจพเจฐเจ—เฉ‡เจŸ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ…เจคเฉ‡ เจ•เฉ‹เจก เจจเจพเจฎ เจฒเจˆ เจชเฉเฉฑเจ›เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ fetchy เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจกเฉ‡เจฌเฉ€เจ…เจจ เจ…เจคเฉ‡ เจ‰เจฌเฉฐเจŸเฉ‚ เจ…เจงเจพเจฐเจค เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจนเฉเจฃ เจคเฉเจธเฉ€เจ‚ เจšเฉเจฃ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจฌเฉ‡เจฒเฉ‹เฉœเฉ€เจ†เจ‚ เจนเจจ (เจธเจพเจกเฉ‡ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš) เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจพเจนเจฐ เจ•เฉฑเจข เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‰เจฆเจพเจนเจฐเจฃ เจตเจœเฉ‹เจ‚, เจชเจพเจˆเจฅเจจ เจชเจฐเจฒ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจชเจฐเจฒ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

ะ ะตะทัƒะปัŒั‚ะฐั‚ั‹

เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเจพเจˆเจฅเจจ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† fetchy dockerize python3.5 เจ‡เจธเจฆเจพ เจญเจพเจฐ เจธเจฟเจฐเจซเจผ 35MB เจนเฉˆ (เจฎเฉˆเจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจฏเจ•เฉ€เจจ เจนเฉˆ เจ•เจฟ เจ‡เจธเจจเฉ‚เฉฐ เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจตเฉ€ เจนเจฒเจ•เจพ เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ)เฅค เจ‡เจธ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจกเจฟเจธเจŸเฉเจฐเฉ‹เจฒเฉˆเฉฑเจธ เจšเจฟเฉฑเจคเจฐ เจคเฉ‹เจ‚ เจนเฉ‹เจฐ 15MB เจ˜เจŸเจพเจ‰เจฃ เจตเจฟเฉฑเจš เจ•เจพเจฎเจฏเจพเจฌ เจฐเจนเฉ‡เฅค

เจคเฉเจธเฉ€เจ‚ เจนเฉเจฃ เจคเฉฑเจ• เจ‡เจ•เฉฑเจ เฉ€เจ†เจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เฉฑเจฅเฉ‡.

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ - เจ‡เฉฑเจฅเฉ‡.

เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจ˜เจพเจŸ เจนเฉˆ, เจคเจพเจ‚ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจฌเจฃเจพเจ“โ€”เจฎเฉˆเจจเฉ‚เฉฐ เจฎเจฆเจฆ เจ•เจฐเจ•เฉ‡ เจ–เฉเจธเจผเฉ€ เจนเฉ‹เจตเฉ‡เจ—เฉ€ :) เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฎเฉˆเจ‚ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจนเฉ‹เจฐ เจชเฉˆเจ•เฉ‡เจœ เจชเฉเจฐเจฌเฉฐเจงเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจซเฉˆเจšเฉ€ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจจ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚, เจคเจพเจ‚ เจœเฉ‹ เจฎเจฒเจŸเฉ€-เจธเจŸเฉ‡เจœ เจฌเจฟเจฒเจก เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจพ เจชเจตเฉ‡เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹