ΠœΠ°Π»ΠΊΠΈΡ‚Π΅ Docker ΠΎΠ±Ρ€Π°Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ вярваха Π² сСбС си*

[ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° към амСриканската дСтска ΠΏΡ€ΠΈΠΊΠ°Π·ΠΊΠ° β€žΠœΠ°Π»ΠΊΠΈΡΡ‚ Π»ΠΎΠΊΠΎΠΌΠΎΡ‚ΠΈΠ², ΠΊΠΎΠΉΡ‚ΠΎ Π²ΡΡ€Π²Π°ΡˆΠ΅ Π² сСбС ΡΠΈβ€œ (The Little Engine That Could) β€” Π±Π΅Π»Π΅ΠΆΠΊΠ° Π½Π° ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°]*

ΠœΠ°Π»ΠΊΠΈΡ‚Π΅ Docker ΠΎΠ±Ρ€Π°Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ вярваха Π² сСбС си*

Как Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½ΠΈ docker ΠΎΠ±Ρ€Π°Π·ΠΈ Π·Π° собствСнитС си Π½ΡƒΠΆΠ΄ΠΈ

НСобикновСна обсСсия

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

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

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

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

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

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

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ако Π²ΠΈ интСрСсува Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚, ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ Alpine сами ΠΏΠΎ сСбС си са ΠΌΠ°Π»ΠΊΠΈ ΠΈ вСроятно Ρ‰Π΅ Π²ΠΈ сС сторят подходящи.

Distroless-ΠΎΠ±Ρ€Π°Π·ΠΈ

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Distroless ΠΏΡ€Π΅Π΄Π»Π°Π³Π° колСкция ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΈ β€ždistrolessβ€œ ΠΎΠ±Ρ€Π°Π·ΠΈ, Ρ‚Π΅ Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ стС свикнали Π΄Π° Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ Π² командния Ρ€Π΅Π΄. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ pip ΠΈ apt Π½Π΅ Π΅ възмоТно:

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

Dockerfile, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ distroless ΠΎΠ±Ρ€Π°Π· Python 3

Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° контСкста Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π΄ΠΎ Docker Π΄Π΅ΠΌΠΎΠ½  2.048kB
Π‘Ρ‚ΡŠΠΏΠΊΠ° 1/2 : FROM gcr.io/distroless/python3
 ---> 556d570d5c53
Π‘Ρ‚ΡŠΠΏΠΊΠ° 2/2 : RUN pip3 install numpy
 ---> ИзпълняванС в dbfe5623f125
/bin/sh: 1: pip3: Π½Π΅ Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½

Pip Π² ΠΎΠ±Ρ€Π°Π·Π° липсва

ОбикновСно Ρ‚Π°ΠΊΡŠΠ² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сС Ρ€Π΅ΡˆΠ°Π²Π° Ρ‡Ρ€Π΅Π· многостСпСнно ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅:

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. НС Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π·Π»Π΅! Π—Π° сравнСниС: стандартният ΠΎΠ±Ρ€Π°Π· Python Π΅ 929MB, Π° β€žΠΎΡΠ»Π°Π±Π΅Π½ΠΈΡΡ‚β€œ (3.7-slim) β€” 179MB, ΠΎΠ±Ρ€Π°Π· alpine (3.7-alpine) β€” 98.6MB, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ базовият distroless ΠΎΠ±Ρ€Π°Π·, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π΅ 50.9MB.

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

Към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° писанСто Π½Π° Ρ‚Π΅Π·ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Google distroless Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΈ: Java ΠΈ Python β€” всС ΠΎΡ‰Π΅ Π² СкспСримСнтална Ρ„Π°Π·Π°, Π° Python ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° само Π·Π° 2.7 ΠΈ 3.5.

ΠœΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈ

НСка сС Π²ΡŠΡ€Π½Π΅ΠΌ Π½Π° ΠΌΠΎΠ΅Ρ‚ΠΎ обсСсивно ΡƒΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈ.

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

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

FROM scratch

ΠžΠ±Ρ€Π°Π·ΡŠΡ‚ scratch

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

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

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

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

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

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

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

ΠžΠ±Ρ€Π°Π·ΡŠΡ‚ Π½Π° Python, създадСн с ΠΊΠΎΠΌΠ°Π½Π΄Π° fetchy dockerize python3.5 ΠΏΠΎΠΏΠΈΠ²Π° само 35ΠœΠ‘ (сигурСн съм, Ρ‡Π΅ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ ΠΎΡ‰Π΅ ΠΏΠΎ-Π»Π΅ΠΊ). Π’Π°ΠΊΠ° Ρ‡Π΅, с distroless-ΠΎΠ±Ρ€Π°Π·Π° успяхмС Π΄Π° 'ΡΡŠΠΊΡ€Π°Ρ‚ΠΈΡˆ' ΠΎΡ‰Π΅ 15ΠœΠ‘.

Всички ΠΎΠ±Ρ€Π°Π·ΠΈ, ΡΡŠΠ±Ρ€Π°Π½ΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС видят Ρ‚ΡƒΠΊ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ β€” Ρ‚ΡƒΠΊ.

Ако Π²ΠΈ липсват Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, просто ΠΏΠΎΠ΄Π°ΠΉΡ‚Π΅ заявка β€” с радост Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π° πŸ™‚ ΠžΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° работя ΠΏΠΎ интСграцията Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈ Π² fetchy, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½ΡƒΠΆΠ΄Π°Ρ‚Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ΅Ρ‚Π°ΠΏΠ½ΠΈ сборки Π΄Π° ΠΎΡ‚ΠΏΠ°Π΄Π½Π΅.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster