Nkeji 4 / 11

Njikere: Dockerfile na nkwalite onyonyo na ọgụgụ isi

Uru:

  • Ikike ịghọta akpa na echiche Dockerfile, ntuziaka bụ isi na mgbagha oyi, yana inwe ọgụgụ isi na-emepụta Dockerfile dị njikere.
  • Ikike iji belata nha onyonyo na ịbawanye ọsọ nke ntinye na nchekwa site na iji wuo ọtụtụ ọkwa yana obere onyonyo ntọala
  • Ikike itinye ụkpụrụ nchekwa nke ịghara itinye ihe nzuzo dị na onyonyo a, na-eji onye ọrụ na-enweghị ikike na-agba ya kama mgbọrọgwụ, na inyocha onyonyo a.

Ahịrịokwu ahụ "Ọ na-agba na kọmputa m" bụ ahịrịokwu kachasị ọnụ na akụkọ ihe mere eme nke ngwanrọ. Otu koodu ahụ na-agbawa na sava dị iche n'ihi ụdị ọba akwụkwọ dị iche iche. Teknụzụ igbe na-edozi nsogbu a kpọmkwem: ọ na-etinye ngwa gị na ihe niile ọ chọrọ iji rụọ ọrụ - ọba akwụkwọ, oge ịgba ọsọ, ntọala - n'ime otu ngwugwu enwere ike. Nke a ngwugwu na-arụ ọrụ kpọmkwem otu ebe niile. Ngwá ọrụ akpa kachasị ewu ewu bụ Docker.

A na-akpọ nkọwa nke akpa Dockerfile: ọ bụ faịlụ ederede na-akọwa n'usoro nke isi ihe oyiyi gị ga-esi malite, faịlụ ndị a ga-e depụtaghachi, na iwu ga-agba ọsọ. A na-emepụta ihe oyiyi site na nhazi a; Mgbe ihe oyiyi na-agba ọsọ, ọ na-aghọ akpa. AI nwere nkà nke ukwuu n'ịde Dockerfile na - nke kachasị mkpa - ibelata na ichekwa ya. Mana ọ bụ ọrụ gị ịghọta ihe usoro nri emepụtara na-eme yana ebe ọ nwere ike ịgbapụta ihe nzuzo.

Ntuziaka bụ isi nke Dockerfile

Iji nyochaa Dockerfile, ị kwesịrị ịma ntuziaka ndị a:

  • 'SITE': Na-ahọpụta onyonyo ntọala (dịka ọmụmaatụ Python: 3.12-slim). Nke a bụ ebe nha na nchekwa nke ihe onyonyo a si abịa.
  • 'WORKDIR': Na-akọwapụta ndekọ aha ọrụ.
  • 'Copy' / 'ADD': Nṅomi faịlụ na onyonyo a.
  • `RUN`: Na-eme iwu n'oge a na-arụ ọrụ (dịka ọmụmaatụ na-etinye ndabere). RUN ọ bụla na-emepụta oyi akwa ọhụrụ.
  • 'ENV': Na-akọwapụta mgbanwe gburugburu ebe obibi.
  • 'EXPOSE': Akwụkwọ nke ọdụ ụgbọ mmiri na-ege ntị.
  • 'CMD' / 'ENTRYPOINT': Na-ekpebi iwu nke ga-agba ọsọ mgbe akpa ahụ malitere.

Echiche dị oke egwu bụ oyi akwa: Docker na-echekwa ntụziaka ọ bụla dị ka oyi akwa. Ọ bụrụ na ị na-etinye usoro na-agbanwe ugboro ugboro na njedebe, ọkwa ndị na-adịghị agbanwe agbanwe ga-esi na cache pụta ma ihe owuwu ahụ ga-agba ọsọ ọsọ.

Ndụmọdụ: The nnukwu levers abụọ maka ibelata nha oyiyi bụ: (1) ịhọrọ obere ihe oyiyi dị ka slim ma ọ bụ alpine; (2) na-eji multi-stage-ewu - ịhapụ ngwá ọrụ ewu n'otu ọkwa na naanị ibuga ngwaahịa ikpeazụ ka ọ dị mkpa. AI nwere ike mejuputa ihe abụọ a mgbe ọ bụla ọ chọrọ.

Gịnị mere obere ihe oyiyi ahụ ji dị mkpa? N'ihi na nha onyonyo abụghị naanị okwu diski. Ihe oyiyi buru ibu na-ewe ogologo oge iji dọpụta ya na ntinye nke ọ bụla, na-ewekwu ohere na ndekọ aha, na-ebelata mmalite nke Pods ọhụrụ ka ọ na-eme ka ọ dị elu, na n'ihi na ọ nwere ọtụtụ ngwugwu, ọ na-enye nnukwu agha elu-ya bụ, oghere maka onye na-awakpo iji mee ihe. Iji ihe oyiyi 100 MB kama ịbụ ihe oyiyi 1 GB; Ọ na-ebelata oge ntinye, na-ebelata ego ma na-abawanye nchekwa. Ịkwalite Dockerfile na-aghọrọ uru atọ ndị a n'otu oge. Kwupụta n'ụzọ doro anya ebumnuche "onyinyo ikpeazụ kacha nta" mgbe ị na-arịọ AI maka Dockerfile kachasị mma; ya mere, ọ na-ebute ụzọ ikewa usoro nchịkọta na ịtụfu ngwugwu na-adịghị mkpa.

Nzọụkwụ site na nzọụkwụ: Ịmepụta na ịkwalite Dockerfile na AI

  1. Kọwaa ngwa ahụ. Asụsụ, ụdị, iwu ntinye, ọdụ ụgbọ mmiri ege ntị.
  2. Mee ka emepụtara nke mbụ. Rịọ Dockerfile dị mfe na-arụ ọrụ.
  3. Bulie ya elu. Rịọ otu AI maka iwulite ọtụtụ ọkwa, obere onyonyo ntọala yana nkwalite usoro oyi akwa.
  4. Lelee nche. Ọ bụ ihe nzuzo agbakwunyere, ọ na-agba ọsọ dị ka mgbọrọgwụ, enwere ngwaọrụ ọ bụla na-adịghị mkpa?
  5. Mee ma tụọ nha. Hụ nha ya na onyonyo docker ka emechara docker.
  6. Nyochaa. Lelee maka adịghị ike ama ama site na iji nyocha nrigbu dị ka docker scout ma ọ bụ obere ihe.

Nchekwa: ihe egwu ndị nwere akpa

A na-eleghara nchekwa akpa anya ngwa ngwa. Iwu atọ:

  1. Etinyela Nzuzo na onyonyo a. Ahịrị dị ka ENV API_KEY=... ma ọ bụ COPY. Onye ọ bụla natara ihe onyonyo a nwere ike ịgụ ya. Nye ihe nzuzo na oge ojiri gaa dị ka mgbanwe gburugburu ebe obibi ma ọ bụ site na vault.
  2. Na-agba ọsọ dị ka mgbọrọgwụ. Site na ndabara, arịa na-agba ọsọ dị ka mgbọrọgwụ; Ihe oghere nwere ike ịghọ ụzọ mgbapụ site na akpa ahụ. Gaa na onye ọrụ na-enwetaghị ikike nwere ntuziaka USER.
  3. Onyonyo ntọala pere mpe na nke ọhụrụ. Onyonyo agbajiri agbaji na-adị nwayọ ma nwee adịghị ike karịa. Họrọ slim/alpine, dozie ụdị ahụ (ejila : kacha ọhụrụ).
Akpachara anya: Ọbụlagodi na ị na-eji ihe nzuzo na RUN wee hichapụ ya, ọ na-adị na etiti ma enwere ike ịgụghachi ya site na akụkọ docker. Ọ bụrụ na achọrọ ihe nzuzo mgbe a na-ewu ụlọ, jiri usoro nzuzo Docker, ọ bụghị ENV/COPY.

Tebụlụ mmetụta kachasị mma

oru

Kedu ihe na-eme

Mmetụta ahụkarị

slim/alpine isi onyonyo

Na-atụfu ngwugwu ndị na-adịghị mkpa

900MB → 120MB

Nrụpụta ọtụtụ ọkwa

Agụnyere ihe nrụpụta

700MB → 90MB

.dockerịpụ

Agụnyeghị faịlụ ndị na-adịghị mkpa na nrụpụta

Mee ngwa ngwa, obere okirikiri

Nhazi ọkwa

Na-abawanye iti mkpu

Mee 5 min → 40 sk

Ndozi ụdị (:15)

Nkwughachi + nchekwa

Na-egbochi mmebi mberede

Obere ikpe atọ

Ihe onyonyo 1 - 1.1 GB belatara na 95 MB. Onyonyo Node.js otu otu bụ 1.1 GB; Nkwanye nke ọ bụla were nkeji. Ha gwara AI "welite nke a site na iji multi-stage build and alpine". AI kewapụrụ usoro nchịkọta ma kwaga naanị faịlụ ndị emepụtara na onyonyo dị mkpa; Ihe si na ya pụta bụ 95 MB, oge nrụnye ji otu ụzọ n'ụzọ atọ belata.

Ikpe 2 - lie nzuzo jidere. Otu injinia hụrụ ahịrị ENV DB_PASSWORD=prod_nzuzo na Dockerfile nke YZ mepụtara. AI agbakwunyela paswọọdụ n'ime onyonyo ka ọ "na-arụ ọrụ". Injinia wepụrụ nke a ma gbanwee ya ka ọ bụrụ ịgụ paswọọdụ sitere na mgbanwe gburugburu ebe obibi na oge ojiri gaa. Ma ọ bụghị ya, onye ọ bụla weghaara foto a nwere ike ịgụ paswọọdụ.

Ikpe 3 - ihe ize ndụ nke mgbapụ mgbọrọgwụ. Ngwá ọrụ nyocha kwuru na onyonyo nke AI mepụtara na-agba ọsọ dị ka mgbọrọgwụ ma nwee adịghị ike dị egwu. Ndị otu ahụ gbakwunyere USER appuser wee kwanye onyonyo ntọala na ụdị dị ugbu a; ehichapụrụ nyocha. Ihe nkuzi: nyochaa onyonyo ọ bụla tupu ibipụta ya ma kpughee ya nye ndị ọrụ enweghị ikike.

Ndebiri anọ enwere ike iṅomi

1) Na-emepụta Dockerfile kachasị mma:

Dee Dockerfile dị njikere mmepụta maka ngwa [LANGUAGE/FRAMEWORK]. Ntuziaka: - Jiri ihe nrụpụta ọtụtụ ọkwa; mee ka ihe oyiyi ikpeazụ bụrụ nke kacha nta.- Isi ihe oyiyi bụ slim / alpine na mbipute a na-edozi (adịghị eji ": ọhụrụ") .- Gbaa akpa ahụ na onye ọrụ na-enweghị ikike, Ọ BỤGHỊ mgbọrọgwụ.- Ọ dịghị mgbe etinyere ihe nzuzo na oyiyi ahụ; Chere maka mgbanwe gburugburu ebe obibi na oge ojiri gaa. - Tinye .dockerignore ntụnye. Iwu ntinye: [X], ọdụ ụgbọ mmiri ege ntị: [Y].

2) Hazie Dockerfile dị ugbu a:

Lelee Dockerfile a ka ibelata wee mee ngwa ngwa. Na-atụ aro ihe mgbanwe n'usoro oyi akwa, multi-phase ewu, isi oyiyi na ejighi oru ngwugwu; Detuo nha nha/mmetụta ọsọ echere ngbanwe nke ọ bụla. Dockerfile: [CONTENT]

3) Nyochaa nchekwa:

Lelee Dockerfile a maka nchekwa: enwere ihe nzuzo ọ bụla agbakwunyere, ndị ọrụ mgbọrọgwụ, ụdị edoghị anya, ngwaọrụ ndị na-adịghị mkpa, onyonyo ntọala ochie? Depụta ihe nchoputa ahụ n'usoro dị mkpa yana mmezi ọ bụla. Dockerfile: [CONTENT]

4) Mepụta njehie:

Kedu ihe kpatara njehie docker a na otu esi edozi ya? Nye m ihe kpatara ya na ngwọta ya na obere mgbanwe. Emela ezigbo uru ebe ị na-ahụ Nzuzo, jiri ebe nchekwa. Njehie: [LOG] Dockerfile: [CONTENT]

Ngwa ngwa adịghị ike / Ike siri ike

Adịghị ike: "Dee Dockerfile maka ngwa Node m."

Nsonaazụ: nnukwu onyogho isi, onye ọrụ mgbọrọgwụ, otu ogbo, ikekwe enweghị ike na nzuzo; Ihe mmepụta na-enweghị echiche maka nha na nchekwa.

siri ike: "Dee Dockerfile dị njikere maka ngwa Node 20: multi-stage build, node: 20-alpine base image (ụdị edozi), na-eji USER na-enweghị ikike, ntinye nzuzo, na-ege ntị na ọdụ ụgbọ mmiri 3000, nbanye node dist/server.js. Na-atụkwa aro .dockerignore."

Ọdịiche: ụdị ngwa ngwa nke abụọ na-enye usoro njikarịcha, iwu nchekwa na iwu nbanye; Ihe mmepụta ahụ na-aghọ obere, nchekwa na ngwa ngwa.

Mmejọ ndị nkịtị

  • Iji `ENV`/`Copy` tinye ihe nzuzo ahụ n'ime onyonyo a. Ọ na-anọgide n'ígwé ma gụọ ya azụ.
  • Na-agba ọsọ dị ka mgbọrọgwụ. Ịwụfe ntuziaka USER bụ nnukwu ihe egwu nchekwa.
  • Iji `: kacha ọhụrụ`. Ọ na-emepụta mwube na-enweghị atụ na ọgba aghara ndị a na-atụghị anya ya.
  • Na-amafe ihe nrụpụta ọtụtụ ọkwa. Ngwa mkpokọta na-akpachapụ foto ikpeazụ na-enweghị isi.
  • Edela '.dockerignore'. Agụnyere nnukwu akwụkwọ ndekọ aha dị ka .git na node_modules n'ime ihe nrụpụta ahụ.
  • Na-ebipụta onyonyo a na-enweghị nyocha ya. Na-emepụta adịghị ike ama ama n'amaghị ha.

Na nchịkọta

Akpa na-etinye ngwa ahụ n'ime ngwugwu ndị na-ebugharị na-arụ ọrụ otu ebe niile; Ntụziaka bụ Dockerfile. AI dị ike n'ịmepụta Dockerfiles dị njikere yana kachasị mma - mana ịkwesịrị ịchọrọ n'ụzọ doro anya ihe nrụpụta ọtụtụ, obere onyonyo ntọala, enweghị ndị ọrụ na-akwadoghị, na enweghị nzuzo. Mbelata nha onyonyo na-eme ka ntinye ngwa ngwa; Ịbanyeghị ihe nzuzo ahụ, ịgbanarị mgbọrọgwụ, na nyocha ihe onyonyo a na-eme ka nchekwa. Ọ bụ ọrụ gị ịchọpụta ihe usoro nri ọ bụla na-eme yana ebe ọ na-agbapụta.

Ọrụ ngwa

Họrọ ngwa dị mfe. Mee ka AI wepụta Dockerfile yana ndebiri “ọgbọ Dockerfile kachasị”. Mgbe ahụ: (1) Were template "Security check" nyochaa ihe nzuzo agbakwunyere na mgbọrọgwụ; (2) ọ bụrụ na ọ ga-ekwe omume, wuo docker wee jiri onyonyo docker tụọ nha; (3) rịba ama nke usoro ga-akacha dị irè n'ibelata ihe oyiyi dị ka nzọụkwụ ọzọ.

ndetu

  • [ ] Agbakwunyere m ụdị asụsụ/framework, iwu ntinye, na ọdụ ụgbọ mmiri na ngwa ngwa m.
  • [] Enweghị ihe nzuzo agbakwunyere na Dockerfile; na-atụ anya na nzuzo oge ojiri gaa.
  • [] Akpa na-eji USER na-enwetaghị ikike, ọ bụghị mgbọrọgwụ.
  • [] Foto dị n'okpuru dị obere (slim/alpine) ma edoziri ụdị ya (enweghị: ọhụrụ).
  • [ ] M na-eji multi-stage-ewu na .dockerignore.
  • [ ] Eji m nchọta adịghị ike enyocha onyonyo a.