ΠΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΡΠΎΡ ΠΎΡΠ½ΡΠ΅ docker-ΠΎΠ±ΡΠ°Π·Ρ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ Π½ΡΠΆΠ΄
ΠΠ΅ΠΎΠ±ΡΡΠ½Π°Ρ ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΡΡΡ
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΏΠ°ΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² Ρ Π±ΡΠ» ΠΎΠ΄Π΅ΡΠΆΠΈΠΌ Π½Π°Π²ΡΠ·ΡΠΈΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ: Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π· Docker, ΡΠ°ΠΊ ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ?
ΠΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΈΠ΄Π΅Ρ ΡΡΡΠ°Π½Π½Π°Ρ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅Π±ΡΠΈ, Ρ Π±Ρ Ρ ΠΎΡΠ΅Π» ΠΏΠΎΡΡΠ½ΠΈΡΡ, ΡΠ΅ΠΌ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊ ΠΌΠ΅Π½Ρ Π·Π°ΡΠ΅ΠΏΠΈΠ»Π°, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²Π°Ρ.
ΠΠΎΡΠ΅ΠΌΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠΊΡΠ°ΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠ±ΡΠ°Π·Π° Docker, ΠΌΡ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΎΠΊΡΠ°ΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠ±ΡΠ°Π·Ρ ΡΠΈΡΠ΅, Π²Π΅Π΄Ρ ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ β ΠΎΠ±ΡΠ°Π·Ρ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΡΡΡΠΎΡΠΊΡ Π±ΡΡΡΡΠ΅Π΅, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎ ΠΌΠ½Π΅, ΡΡΠΎ Π½Π΅ ΡΡΠΎΠ»Ρ Π²Π°ΠΆΠ½ΠΎ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π²Π°Ρ Π·Π°Π±ΠΎΡΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°Π·Ρ Alpine ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΌΠ°Π»Ρ ΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π²Π°ΠΌ.
Distroless-ΠΎΠ±ΡΠ°Π·Ρ
pip
ΠΈ apt
Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ:
FROM gcr.io/distroless/python3
RUN pip3 install numpy
Dockerfile, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ distroless-ΠΎΠ±ΡΠ°Π· 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
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/
ΠΠ½ΠΎΠ³ΠΎΡΡΠ°ΠΏΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π· ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 130ΠΠ. ΠΠ΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΠΏΠ»ΠΎΡ
ΠΎ! ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ: ΠΎΠ±ΡΠ°Π· Python ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π΅ΡΠΈΡ 929ΠΠ, Π° «ΠΏΠΎΡ
ΡΠ΄Π΅Π²ΡΠΈΠΉ» (3,7-slim
) β 179ΠΠ, ΠΎΠ±ΡΠ°Π· alpine (3,7-alpine
) β 98,6MB, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΉ distroless-ΠΎΠ±ΡΠ°Π·, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅, β 50,9ΠΠ.
ΠΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΡΠ΅Π»ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /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