Малки изобраТСния Π½Π° Docker, ΠΊΠΎΠΈΡ‚ΠΎ вярваха Π² сСбС си*

[ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠ° към амСриканската дСтска ΠΏΡ€ΠΈΠΊΠ°Π·ΠΊΠ° β€žΠœΠ°Π»ΠΊΠΈΡΡ‚ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΡˆΠ΅β€œ – ΠΏΡ€ΠΈΠ±Π». ΠΏΠ»Π°Ρ‚Π½ΠΎ]*

Малки изобраТСния Π½Π° Docker, ΠΊΠΎΠΈΡ‚ΠΎ вярваха Π² сСбС си*

Как Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΌΠ°Π»ΠΊΠΈ Docker изобраТСния Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ

НСобичайна мания

ΠŸΡ€Π΅Π· послСднитС няколко мСсСца бях обсСбСн ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Docker ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ всС ΠΎΡ‰Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ?

Π Π°Π·Π±ΠΈΡ€Π°ΠΌ, идСята Π΅ странна.

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° навляза Π² подробности ΠΈ тСхничСски подробности, Π±ΠΈΡ… искал Π΄Π° обясня Π·Π°Ρ‰ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠ΅ Π±Π΅Π·ΠΏΠΎΠΊΠΎΠΈ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠ°ΠΊ сС отнася Π·Π° вас.

Π—Π°Ρ‰ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ ΠΈΠΌΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π§Ρ€Π΅Π· намаляванС Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Docker, Π½ΠΈΠ΅ намалявамС списъка с уязвимости. ОсвСн Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠΌ изобраТСнията ΠΏΠΎ-чисти, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ само Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° стартиранС Π½Π° прилоТСния.

Има ΠΎΡ‰Π΅ Π΅Π΄Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ прСдимство - изобраТСнията сС изтСглят ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ, Π½ΠΎ спорСд ΠΌΠ΅Π½ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½ΠΎ.

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ако сС притСсняватС Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, самият външСн Π²ΠΈΠ΄ Π½Π° Alpine Π΅ малък ΠΈ вСроятно Ρ‰Π΅ Π²ΠΈ паснС.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· дистрибуция

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ 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 MB. НС Π΅ ΠΌΠ½ΠΎΠ³ΠΎ лошо! Π—Π° сравнСниС: ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Python ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‚Π΅ΠΆΠΈ 929MB, Π° β€žΠΏΠΎ-Ρ‚ΡŠΠ½ΠΊΠΎΡ‚ΠΎβ€œ (3,7-slim) - 179MB, алпийско ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (3,7-alpine) Π΅ 98,6 MB, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· дистрибуция, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π΅ 50,9 MB.

Π‘ΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ цяла дирСктория /usr/local/lib/python3.7/site-packages, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° зависимости, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Π½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π΅ ясно, Ρ‡Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° всички ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Π±Π°Π·ΠΎΠ²ΠΈ изобраТСния Π½Π° Python Π²Π°Ρ€ΠΈΡ€Π°.

Към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° писанС Google distroless Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΌΠ½ΠΎΠ³ΠΎ изобраТСния: Java ΠΈ Python всС ΠΎΡ‰Π΅ са Π½Π° СкспСримСнталСн Π΅Ρ‚Π°ΠΏ, Π° Python ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° само Π·Π° 2,7 ΠΈ 3,5.

Малки изобраТСния

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към манията ΠΌΠΈ Π΄Π° създавам ΠΌΠ°Π»ΠΊΠΈ изобраТСния.

ΠšΠ°Ρ‚ΠΎ цяло исках Π΄Π° видя ΠΊΠ°ΠΊ сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚ изобраТСния Π±Π΅Π· дистрибуция. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π±Π΅Π· дистрибуция ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° инструмСнта Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Google bazel. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Bazel ΠΈ писанСто Π½Π° ваши собствСни изобраТСния ΠΎΠ±Π°Ρ‡Π΅ ΠΎΡ‚Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° (ΠΈ чСстно ΠΊΠ°Π·Π°Π½ΠΎ, ΠΏΡ€Π΅ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ»Π΅Π»ΠΎΡ‚ΠΎ Π΅ Π·Π°Π±Π°Π²Π½ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ). Π˜ΡΠΊΠ°Ρ… Π΄Π° опростя ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ изобраТСния: Π°ΠΊΡ‚ΡŠΡ‚ Π½Π° създаванС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ трябва Π΄Π° бъдС ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ прост, Π±Π°Π½Π°Π»Π½ΠΎ. Π—Π° Π΄Π° няматС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° вас, само Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄ Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°: просто ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· для <ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅>.

Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ искатС Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ свои собствСни изобраТСния, Ρ‚ΠΎΠ³Π°Π²Π° Π·Π½Π°ΠΉΡ‚Π΅: ΠΈΠΌΠ° Ρ‚Π°ΠΊΠΎΠ²Π° ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΎ Π΄ΠΎΠΊΠ΅Ρ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, scratch. Scratch Π΅ β€žΠΏΡ€Π°Π·Π½ΠΎβ€œ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π² Π½Π΅Π³ΠΎ няма Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‚Π΅ΠΆΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ - ΡƒΠ°Ρƒ! - 77 Π±Π°ΠΉΡ‚Π°.

FROM scratch

Π‘ΠΊΡ€Π΅Ρ‡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π˜Π΄Π΅ΡΡ‚Π° Π½Π° скрСч ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ всякакви зависимости ΠΎΡ‚ хост ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π² Π½Π΅Π³ΠΎ ΠΈ ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π² Dockerfile (Ρ‚ΠΎΠ²Π° Π΅ ΠΊΠ°Ρ‚ΠΎ Π΄Π° Π³ΠΈ ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ Π² apt ΠΈ инсталирайтС ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°), ΠΈΠ»ΠΈ ΠΏΠΎ-късно, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Docker бъдС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ. Π’ΠΎΠ²Π° Π²ΠΈ позволява напълно Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° Docker ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ напълно Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π‘Π΅Π³Π° трябва ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΡΡŠΠ±Π΅Ρ€Π΅ΠΌ Ρ‚Π΅Π·ΠΈ зависимости. Π‘ΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ инструмСнти ΠΊΠ°Ρ‚ΠΎ apt Π²ΠΈ позволяват Π΄Π° изтСглятС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π½ΠΎ Ρ‚Π΅ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° машина ΠΈ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Windows ΠΈΠ»ΠΈ MacOS.

Π’Π°ΠΊΠ° Ρ‡Π΅ сС Π·Π°Π΅Ρ… Π΄Π° създам свой собствСн инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ Π±Π°Π·ΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с възмоТно Π½Π°ΠΉ-малкия Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΡΡŠΡ‰ΠΎ Ρ‰Π΅ стартира всяко ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Ubuntu/Debian, Π½Π°ΠΏΡ€Π°Π²ΠΈΡ… ΠΈΠ·Π±ΠΎΡ€ (ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ‚Π°) ΠΈ рСкурсивно Π½Π°ΠΌΠ΅Ρ€ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ зависимости. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈ Π½Π°ΠΉ-Π½ΠΎΠ²Π°Ρ‚Π° стабилна вСрсия Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° рисковСтС Π·Π° сигурността, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΅ възмоТно.

НарСкох инструмСнта fetchy, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠΉ... Π½Π°ΠΌΠΈΡ€Π° ΠΈ носи... ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ трябва [ΠΎΡ‚ английски β€žΠ΄ΠΎΠ½Π΅ΡΠΈβ€œ, β€žΠ΄ΠΎΠ½Π΅ΡΠΈβ€œ - ΠΏΡ€ΠΈΠ±Π». ΠΏΠ»Π°Ρ‚Π½ΠΎ]. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‡Ρ€Π΅Π· интСрфСйс Π½Π° командния Ρ€Π΅Π΄, Π½ΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° API.

Π—Π° Π΄Π° сглобитС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° fetchy (Π½Π΅ΠΊΠ° Ρ‚ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python), просто трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ CLI ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½: fetchy dockerize python. МоТС Π΄Π° Π±ΡŠΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠΏΠΈΡ‚Π°Π½ΠΈ Π·Π° Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎ ΠΈΠΌΠ΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ fetchy Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° само ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Debian ΠΈ Ubuntu.

Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠΎΠΈ зависимости ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ (Π² нашия контСкст) ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅. НапримСр, Python зависи ΠΎΡ‚ perl, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΎΠ±Ρ€Π΅ Π±Π΅Π· инсталиран Perl.

Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ

Python ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, създадСно с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° fetchy dockerize python3.5 Ρ‚Π΅ΠΆΠΈ само 35MB (ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ сигурСн съм, Ρ‡Π΅ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° станС ΠΎΡ‰Π΅ ΠΏΠΎ-Π»Π΅ΠΊ). Оказва сС, Ρ‡Π΅ успяхмС Π΄Π° изчистим ΠΎΡ‰Π΅ 15 WW ΠΎΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π±Π΅Π· дистрибуция.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ всички изобраТСния, ΡΡŠΠ±Ρ€Π°Π½ΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ‚ΡƒΠΊ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ - Ρ‚ΡƒΠΊ.

Ако Π²ΠΈ липсват Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, просто ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ заявка - Ρ‰Π΅ сС Ρ€Π°Π΄Π²Π°ΠΌ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π° :) НСщо ΠΏΠΎΠ²Π΅Ρ‡Π΅, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° работя Π²ΡŠΡ€Ρ…Ρƒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ във fetchy, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° няма Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ΅Ρ‚Π°ΠΏΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€