āĻ•ā§āώ⧁āĻĻā§āϰ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āϝāĻž āύāĻŋāĻœā§‡āĻĻ⧇āϰāϕ⧇ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻ•āϰ⧇āĻ›āĻŋāϞ*

[āφāĻŽā§‡āϰāĻŋāĻ•āĻžāύ āĻļāĻŋāĻļ⧁āĻĻ⧇āϰ āϰ⧂āĻĒāĻ•āĻĨāĻžāϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ "āĻĻā§āϝ āϞāĻŋāϟāϞ āχāĻžā§āϜāĻŋāύ āĻĻā§āϝāĻžāϟ āϕ⧁āĻĄ" - āĻĒā§āϰāĻžāϝāĻŧāĨ¤ āĻ—āϞāĻŋ]*

āĻ•ā§āώ⧁āĻĻā§āϰ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āϝāĻž āύāĻŋāĻœā§‡āĻĻ⧇āϰāϕ⧇ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻ•āϰ⧇āĻ›āĻŋāϞ*

āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āϜāĻ¨ā§āϝ āϛ⧋āϟ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ

āĻ…āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āφāĻŦ⧇āĻļ

āĻ—āϤ āĻ•āϝāĻŧ⧇āĻ• āĻŽāĻžāϏ āϧāϰ⧇, āφāĻŽāĻŋ āĻāĻ•āϟāĻŋ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āĻ•āϤāϟāĻž āϛ⧋āϟ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϤāĻž āύāĻŋāϝāĻŧ⧇ āĻŽāĻ—ā§āύ āĻšāϝāĻŧ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āĻāĻ–āύāĻ“ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āϚāϞāϛ⧇?

āĻŦ⧁āĻāϞāĻžāĻŽ, āĻ­āĻžāĻŦāύāĻžāϟāĻž āĻ…āĻĻā§āϭ⧁āϤāĨ¤

āφāĻŽāĻŋ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖ āĻāĻŦāĻ‚ āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋāĻ—āϤ āĻŦāĻŋāώāϝāĻŧ⧇ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻžāϰ āφāϗ⧇, āφāĻŽāĻŋ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāϤ⧇ āϚāĻžāχ āϕ⧇āύ āĻāχ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āφāĻŽāĻžāϕ⧇ āĻāϤ āĻŦāĻŋāϰāĻ•ā§āϤ āĻ•āϰ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻžāϕ⧇ āωāĻĻā§āĻŦāĻŋāĻ—ā§āύ āĻ•āϰ⧇āĨ¤

āϕ⧇āύ āφāĻ•āĻžāϰ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ

āĻĄāĻ•āĻžāϰ āϚāĻŋāĻ¤ā§āϰ⧇āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āĻšā§āϰāĻžāϏ āĻ•āϰ⧇, āφāĻŽāϰāĻž āĻāϰ āĻĢāϞ⧇ āĻĻ⧁āĻ°ā§āĻŦāϞāϤāĻžāϰ āϤāĻžāϞāĻŋāĻ•āĻž āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻĻāĻŋāχāĨ¤ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤāĻ­āĻžāĻŦ⧇, āφāĻŽāϰāĻž āĻ›āĻŦāĻŋāϗ⧁āϞāĻŋāϕ⧇ āφāϰāĻ“ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰāĻŋ, āĻ•āĻžāϰāĻŖ āĻāϗ⧁āϞāĻŋāϤ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϜāĻŋāύāĻŋāϏāϗ⧁āϞāĻŋāχ āĻĨāĻžāϕ⧇⧎

āφāϰāĻ“ āĻāĻ•āϟāĻŋ āϛ⧋āϟ āϏ⧁āĻŦāĻŋāϧāĻž āϰāϝāĻŧ⧇āϛ⧇ - āϚāĻŋāĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻāĻ•āϟ⧁ āĻĻā§āϰ⧁āϤ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻŦ⧇, āφāĻŽāĻžāϰ āĻŽāϤ⧇, āĻāϟāĻŋ āĻāϤ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āύāϝāĻŧāĨ¤

āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ: āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āφāĻ•āĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āωāĻĻā§āĻŦāĻŋāĻ—ā§āύ āĻšāύ, āϤāĻŦ⧇ āφāϞāĻĒāĻžāχāύāϗ⧁āϞāĻŋ āύāĻŋāĻœā§‡āĻĻ⧇āϰāϕ⧇ āϛ⧋āϟ āĻŦāϞ⧇ āĻŽāύ⧇ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤāĨ¤

āĻĄāĻŋāĻ¸ā§āĻŸā§āϰ⧋āϞ⧇āϏ āχāĻŽā§‡āϜ

āĻĄāĻŋāĻ¸ā§āĻŸā§āϰ⧋āϞ⧇āϏ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻŽā§ŒāϞāĻŋāĻ• "āĻĄāĻŋāĻ¸ā§āĻŸā§āϰ⧋āϞ⧇āϏ" āϚāĻŋāĻ¤ā§āϰāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ…āĻĢāĻžāϰ āĻ•āϰ⧇, āĻāϤ⧇ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ, āĻļ⧇āϞ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āύ⧇āχ āϝāĻž āφāĻĒāύāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻ…āĻ­ā§āϝāĻ¸ā§āϤāĨ¤ āĻĢāϞ⧇ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰāĻĻ⧇āϰ āĻŽāϤ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ 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, āĻāϤ⧇ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤ āϝāĻĻāĻŋāĻ“ āĻāϟāĻž āĻ¸ā§āĻĒāĻˇā§āϟ āϝ⧇ āϏāĻŽāĻ¸ā§āϤ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĒāĻžāχāĻĨāύ āĻŦ⧇āϏ āχāĻŽā§‡āĻœā§‡āϰ āφāĻ•āĻžāϰ⧇āϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧāĨ¤

āϞ⧇āĻ–āĻžāϰ āϏāĻŽāϝāĻŧ, Google distroless āĻ…āύ⧇āĻ• āĻ›āĻŦāĻŋ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇ āύāĻž: Java āĻāĻŦāĻ‚ Python āĻāĻ–āύāĻ“ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ Python āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ 2,7 āĻāĻŦāĻ‚ 3,5 āĻāϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύāĨ¤

āϛ⧋āϟ āĻ›āĻŦāĻŋ

āϛ⧋āϟ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āϏāĻ™ā§āϗ⧇ āφāĻŽāĻžāϰ āφāĻŦ⧇āĻļ āĻĢāĻŋāϰ⧇.

āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇, āφāĻŽāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞāĻžāĻŽ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤāĻŋāĻ•āϰ āϚāĻŋāĻ¤ā§āϰāϗ⧁āϞāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻĄāĻŋāĻ¸ā§āĻŸā§āϰ⧋āϞ⧇āϏ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟāϟāĻŋ āϗ⧁āĻ—āϞ⧇āϰ āĻŦāĻŋāĻ˛ā§āĻĄ āϟ⧁āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ bazel. āϝāĻžāχāĻšā§‹āĻ•, āĻŦā§āϝāĻžāĻœā§‡āϞ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āύāĻŋāĻœā§‡āϰ āĻ›āĻŦāĻŋāϗ⧁āϞāĻŋ āϞ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āĻ…āύ⧇āĻ• āĻ•āĻžāϜ āϞ⧇āϗ⧇āϛ⧇ (āĻāĻŦāĻ‚ āϏāĻ¤ā§āϝāĻŋ āĻŦāϞāϤ⧇, āϚāĻžāĻ•āĻžāϟāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āωāĻĻā§āĻ­āĻžāĻŦāύ āĻ•āϰāĻž āĻŽāϜāĻžāĻĻāĻžāϰ āĻāĻŦāĻ‚ āĻļāĻŋāĻ•ā§āώāĻžāĻŽā§‚āϞāĻ•)āĨ¤ āφāĻŽāĻŋ āϛ⧋āϟ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āϏāĻšāϜ āĻ•āϰāϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞāĻžāĻŽ: āĻāĻ•āϟāĻŋ āĻ›āĻŦāĻŋ āϤ⧈āϰāĻŋāϰ āĻ•āĻžāϜ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāĻšāϜ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ, āϏāĻžāϧāĻžāϰāĻŖ. āϝāĻžāϤ⧇ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āϝ āϕ⧋āύ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āύ⧇āχ, āĻ•āύāϏ⧋āϞ⧇ āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻŋ āϞāĻžāχāύ: ĐŋŅ€ĐžŅŅ‚Đž ŅĐžĐąŅ€Đ°Ņ‚ŅŒ ĐžĐąŅ€Đ°Đˇ Đ´ĐģŅ <ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩ>.

āϏ⧁āϤāϰāĻžāĻ‚, āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāĻŋāĻœā§‡āϰ āĻ›āĻŦāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ āĻœā§‡āύ⧇ āύāĻŋāύ: āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ…āύāĻ¨ā§āϝ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āφāϛ⧇, scratch. āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āĻāĻ•āϟāĻŋ "āĻ–āĻžāϞāĻŋ" āϚāĻŋāĻ¤ā§āϰ, āĻāϤ⧇ āϕ⧋āύāĻ“ āĻĢāĻžāχāϞ āύ⧇āχ, āϝāĻĻāĻŋāĻ“ āĻāϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āĻ“āϜāύ āĻ•āϰ⧇ - āĻŦāĻžāĻš! - 77 āĻŦāĻžāχāϟāĨ¤

FROM scratch

āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āχāĻŽā§‡āϜ

āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āχāĻŽā§‡āĻœā§‡āϰ āϧāĻžāϰāĻŖāĻž āĻšāϞ āϝ⧇ āφāĻĒāύāĻŋ āĻšā§‹āĻ¸ā§āϟ āĻŽā§‡āĻļāĻŋāύ āĻĨ⧇āϕ⧇ āϝ⧇ āϕ⧋āύāĻ“ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻ•āĻĒāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻšāϝāĻŧ āϏ⧇āϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ āĻĄāĻ•āĻžāϰāĻĢāĻžāχāϞ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ (āĻāϟāĻŋ āϤāĻžāĻĻ⧇āϰ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻžāϰ āĻŽāϤ⧋ apt āĻāĻŦāĻ‚ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āĻĨ⧇āϕ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ), āĻ…āĻĨāĻŦāĻž āĻĒāϰ⧇ āϝāĻ–āύ āĻĄāĻ•āĻžāϰ āϚāĻŋāĻ¤ā§āϰāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ āĻĄāĻ•āĻžāϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āϚāĻŋāĻ¤ā§āϰ⧇āϰ āφāĻ•āĻžāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧋āύ āύāĻž āϕ⧋āύāĻ­āĻžāĻŦ⧇ āĻāχ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āϝ⧇āĻŽāύ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϏāϰāĻžā§āϜāĻžāĻŽ apt āφāĻĒāύāĻžāϕ⧇ āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ, āϤāĻŦ⧇ āϏ⧇āϗ⧁āϞāĻŋ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŽā§‡āĻļāĻŋāύ⧇āϰ āϏāĻžāĻĨ⧇ āφāĻŦāĻĻā§āϧ āĻāĻŦāĻ‚ āϏāĻ°ā§āĻŦā§‹āĻĒāϰāĻŋ, āωāχāĻ¨ā§āĻĄā§‹āϜ āĻŦāĻž āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇ āύāĻžāĨ¤

āϤāĻžāχ āφāĻŽāĻŋ āφāĻŽāĻžāϰ āύāĻŋāĻœā§‡āϰ āϟ⧁āϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏ⧇āϟ āĻ•āϰ⧇āĻ›āĻŋ āϝāĻž āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ•ā§āώ⧁āĻĻā§āϰāϤāĻŽ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āφāĻ•āĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āĻŦ⧇āϏ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āϝ⧇āϕ⧋āύ⧋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāĻžāϞāĻžāĻŦ⧇āĨ¤ āφāĻŽāĻŋ āωāĻŦ⧁āĻ¨ā§āϟ⧁/āĻĄā§‡āĻŦāĻŋāϝāĻŧāĻžāύ āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ, āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧇āĻ›āĻŋ (āϏāϰāĻžāϏāϰāĻŋ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻĨ⧇āϕ⧇ āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻž) āĻāĻŦāĻ‚ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋāĻŽā§‚āϞāĻ•āĻ­āĻžāĻŦ⧇ āϤāĻžāĻĻ⧇āϰ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϖ⧁āρāĻœā§‡ āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋāĨ¤ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋāϰ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĒā§āϝāĻžāϕ⧇āĻœā§‡āϰ āϏāĻ°ā§āĻŦāĻļ⧇āώ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āĻ•āĻĨāĻž āĻ›āĻŋāϞ, āϝāϤāϟāĻž āϏāĻŽā§āĻ­āĻŦ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻā§āρāĻ•āĻŋ āĻ•āĻŽāĻŋāϝāĻŧ⧇āĨ¤

āφāĻŽāĻŋ āϟ⧁āϞ⧇āϰ āύāĻžāĻŽ āĻĻāĻŋāϝāĻŧ⧇āĻ›āĻŋ fetchy, āĻ•āĻžāϰāĻŖ āϏ⧇... āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰ⧇ āύāĻŋāϝāĻŧ⧇ āφāϏ⧇... āϝāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ [āχāĻ‚āϰ⧇āĻœā§€ āĻĨ⧇āϕ⧇ "āφāύ⧁āύ", "āφāύ⧋" - āĻĒā§āϰāĻžāϝāĻŧāĨ¤ āĻ—āϞāĻŋ]āĨ¤ āϟ⧁āϞāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āĻžāϜ āĻ•āϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ•āχ āϏāĻŽāϝāĻŧ⧇ āĻāĻ•āϟāĻŋ API āĻ…āĻĢāĻžāϰ āĻ•āϰ⧇āĨ¤

āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāϤ⧇ fetchy (āĻāĻŦāĻžāϰ āĻāĻ•āϟāĻŋ āĻĒāĻžāχāĻĨāύ āχāĻŽā§‡āϜ āύ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ•), āφāĻĒāύāĻžāϕ⧇ āĻļ⧁āϧ⧁ āĻāχāĻ­āĻžāĻŦ⧇ CLI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇: fetchy dockerize python. āφāĻĒāύāĻŋ āϞāĻ•ā§āĻˇā§āϝ āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāĻŦāĻ‚ āϕ⧋āĻĄāύāĻžāĻŽ āϜāĻ¨ā§āϝ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻ•āĻžāϰāĻŖ fetchy āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĄā§‡āĻŦāĻŋāϝāĻŧāĻžāύ āĻāĻŦāĻ‚ āωāĻŦ⧁āĻ¨ā§āϟ⧁āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

āĻāĻ–āύ āφāĻĒāύāĻŋ āĻŦ⧇āϛ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ āϕ⧋āύ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāϗ⧁āϞāĻŋāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχ (āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāϏāĻ™ā§āϗ⧇) āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞāĻŋ āĻŦāĻžāĻĻ āĻĻāĻŋāύ⧎ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻĒāĻžāχāĻĨāύ āĻĒāĻžāĻ°ā§āϞ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇, āϝāĻĻāĻŋāĻ“ āĻāϟāĻŋ āĻĒāĻžāĻ°ā§āϞ āχāύāĻ¸ā§āϟāϞ āύāĻž āĻ•āϰ⧇āχ āĻ­āĻžāϞ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

Đ ĐĩĐˇŅƒĐģŅŒŅ‚Đ°Ņ‚Ņ‹

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒāĻžāχāĻĨāύ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ fetchy dockerize python3.5 āĻ“āϜāύ āĻŽāĻžāĻ¤ā§āϰ 35MB (āφāĻŽāĻŋ āύāĻŋāĻļā§āϚāĻŋāϤ āϝ⧇ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻāϟāĻŋ āφāϰāĻ“ āĻšāĻžāϞāĻ•āĻž āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇)āĨ¤ āĻĻ⧇āĻ–āĻž āϝāĻžāĻšā§āϛ⧇ āϝ⧇ āφāĻŽāϰāĻž āĻĄāĻŋāĻ¸ā§āĻŸā§āϰ⧋āϞ⧇āϏ āχāĻŽā§‡āϜ āĻĨ⧇āϕ⧇ āφāϰāĻ“ 15 āĻĄāĻžāĻŦā§āϞ⧁āĻĄāĻžāĻŦā§āϞ⧁ āĻļ⧇āĻ­ āĻ•āϰāϤ⧇ āĻĒ⧇āϰ⧇āĻ›āĻŋāĨ¤

āφāĻĒāύāĻŋ āĻāĻ–āύ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻ‚āĻ—ā§ƒāĻšā§€āϤ āϏāĻŦ āĻ›āĻŦāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻ–āĻžāύ⧇.

āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ - āĻāĻ–āĻžāύ⧇.

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻĨāĻžāϕ⧇āύ āϤāĻŦ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻ…āύ⧁āϰ⧋āϧ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ - āφāĻŽāĻŋ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāϤ⧇ āĻĒ⧇āϰ⧇ āϖ⧁āĻļāĻŋ āĻšāĻŦ :) āφāϰāĻ“ āĻŦ⧇āĻļāĻŋ, āφāĻŽāĻŋ āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒā§āϝāĻžāϕ⧇āϜ āĻĒāϰāĻŋāϚāĻžāϞāĻ•āĻĻ⧇āϰ āĻĢ⧇āϚāĻŋāϤ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻžāϜ āĻ•āϰāĻ›āĻŋ, āϝāĻžāϤ⧇ āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻ¸ā§āĻŸā§‡āϜ āĻŦāĻŋāĻ˛ā§āĻĄā§‡āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύāĻž āĻšāϝāĻŧāĨ¤

āωāĻ¤ā§āϏ: www.habr.com

āĻāĻ•āϟāĻŋ āĻŽāĻ¨ā§āϤāĻŦā§āϝ āϜ⧁āĻĄāĻŧ⧁āύ