[navnîşa çîroka zarokan a Amerîkî "Motorê Piçûk Ku Dikaribû" - nêzîkê. kûçe]*

Meriv çawa ji bo hewcedariyên xwe bixweber wêneyên piçûk ên Docker-ê biafirîne
Obsession Unusual
Di van du mehên borî de, ez li ser wê yekê mijûl bûm ku wêneyek Docker çiqas piçûk dikare bibe û hîn jî serîlêdanê dimeşîne?
Ez fêm dikim, fikir xerîb e.
Berî ku ez têkevim hûrgulî û teknîkî, ez dixwazim rave bikim ka çima vê pirsgirêkê ez pir aciz kirim, û ew çawa we eleqedar dike.
Çima mezinahî girîng e
Bi kêmkirina naveroka wêneya Docker, em bi vî rengî navnîşa qelsbûnê kêm dikin. Wekî din, em wêneyan paqijtir dikin, ji ber ku ew tenê tiştên ku ji bo xebitandina serlêdanan hewce ne dihewîne.
Feydeyek piçûktir jî heye - wêne hinekî zûtir têne dakêşandin, lê, bi dîtina min, ev ne ew çend girîng e.
Ji kerema xwe not: Heke hûn ji mezinbûnê ditirsin, Alpine bi xwe piçûk in û îhtîmal e ku hûn li gorî we bin.
Wêneyên bênavber
Hilbijarkek wêneyên bingehîn ên "bênavber" pêşkêşî dike, ew rêveberên pakêtê, şêl û karûbarên din ên ku hûn ji bo dîtina li ser xeta fermanê bikar tînin tune ne. Wekî encamek, rêveberên pakêtê yên mîna bikar bînin pip и apt dê nexebite:
FROM gcr.io/distroless/python3
RUN pip3 install numpyDockerfile wêneya bênavber Python 3 bikar tîne
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 foundPip ne di wêneyê de ye
Bi gelemperî ev pirsgirêk bi avakirina pir-qonaxa çareser dibe:
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/Civîna pir-qonaxa
Encam wêneyek mezinahiya 130 MB e. Pir ne xirab e! Ji bo berhevdanê: wêneya Python-ê ya xwerû 929 MB giran e, û ya "tenik" (3,7-slim) - 179 MB, wêneya alpine (3,7-alpine) 98,6 MB e, dema ku wêneya bênavber a bingehîn ku di nimûneyê de hatî bikar anîn 50,9 MB ye.
Hêjayî gotinê ye ku di mînaka berê de em pelrêçek tevahî kopî dikin /usr/local/lib/python3.7/site-packages, ku dibe ku girêdanên ku em ne hewce ne hebin. Her çend eşkere ye ku cûdahiya mezinahiya hemî wêneyên bingehîn ên Python-ê yên heyî diguhere.
Di dema nivîsandinê de, Google distroless gelek wêneyan piştgirî nake: Java û Python hîn di qonaxa ceribandinê de ne, û Python tenê ji bo 2,7 û 3,5 heye.
Wêneyên piçûk
Vegere ser dilşewatiya min a çêkirina wêneyên piçûk.
Bi gelemperî, min dixwest bibînim ka wêneyên bêserûber çawa têne çêkirin. Projeya bênavber amûra çêkirinê ya Google bikar tîne bazel. Lêbelê, sazkirina Bazel û nivîsandina wêneyên xwe gelek kar girt (û rast be, ji nû ve vekirina çerxê kêf û perwerdehî ye). Min dixwest ku çêkirina wêneyên piçûktir hêsan bikim: çalakiya afirandina wêneyek pir hêsan be, banal. Ji ber ku ji bo we pelên vesazkirinê tune ne, tenê yek rêzek di konsolê de: просто собрать образ для <приложение>.
Ji ber vê yekê, heke hûn dixwazin wêneyên xwe biafirînin, wê hingê zanibin: wêneyek dokerek wusa bêhempa heye, scratch. Scratch wêneyek "vala" ye, di wê de pel tune, her çend ew bi xwerû giran dibe - wow! - 77 bytes.
FROM scratchWêneyê xêz bike
Fikra wêneyek şikestî ev e ku hûn dikarin her girêdayîbûnên ji makîneya mêvandar di nav wê de kopî bikin û an jî wan di hundurê Dockerfile de bikar bînin (ev mîna kopîkirina wan e apt û ji sifrê saz bikin), an paşê gava ku wêneya Docker tête materyal kirin. Ev dihêle hûn bi tevahî naveroka konteynera Docker kontrol bikin, û bi vî rengî mezinahiya wêneyê bi tevahî kontrol bikin.
Niha pêdivî ye ku em bi rengekî van girêdanan berhev bikin. Amûrên heyî yên mîna apt dihêle hûn pakêtan dakêşin, lê ew bi makîneya heyî ve girêdayî ne û, di dawiyê de, piştgirî nakin Windows an jî MacOS-ê.
Ji ber vê yekê min biryar da ku amûrek xwe ava bikim ku bixweber wêneyek bingehîn a bi mezinahiya herî piçûk ava bike û wê bihêle ku her serîlêdanek bixebite. Min pakêt bi kar anîn. Ubuntu/Debian, hilbijartinek pêk anî (pakêtan rasterast ji depoyan wergirt) û bi awayekî dubare girêdayîyên wan dît. Bername diviyabû ku bixweber guhertoya herî dawî ya sabît a pakêtê dakêşîne, û xetereyên ewlehiyê kêm bike.
Min navê amûrê kir fetchy, ji ber ku ew ... dibîne û tîne ... çi hewce ye [ji Îngilîzî "birin", "birin" - nêzîkî. kûçe]. Amûr bi navgîniya rêza fermanê dixebite, lê di heman demê de API-yek pêşkêşî dike.
Ji bo komkirina wêneyek bi kar tînin fetchy (Werin em vê carê wêneyek Python bistînin), hûn tenê hewce ne ku CLI-ê bi vî rengî bikar bînin: fetchy dockerize python. Dibe ku ji we were xwestin ku pergala xebatê ya armanc û navê kod ji ber ku fetchy niha tenê pakêtên li ser bingeha wê bikar tîne Debian и Ubuntu.
Naha hûn dikarin hilbijêrin ka kîjan girêdan qet ne hewce ne (di çarçoveya me de) û wan derxînin. Mînakî, Python bi perl ve girêdayî ye, her çend ew bêyî sazkirina Perl baş dixebite.
Encam
Wêneyê Python bi karanîna fermanê hatî afirandin fetchy dockerize python3.5 giraniya wê tenê 35 MB ye (ez ji pêbawer im ku di pêşerojê de ew dikare hê siviktir jî were çêkirin). Derket holê ku me karî 15 WW-yên din ji wêneya bêserûber paqij bikin.
Hûn dikarin hemî wêneyên ku heya nuha hatine berhev kirin bibînin .
Proje - .
Ger we taybetmendiyên wenda nebin, tenê daxwazek biafirînin - ez ê kêfxweş bibim ku alîkariyê bikim :) Hîn bêtir, ez niha li ser yekkirina rêveberên pakêtê yên din di fetchy de dixebitim, da ku hewcedariya avakirina pir-qonaxa tune be.
Source: www.habr.com
