ProHoster > ΠΠ»ΠΎΠ³ > Kev tswj hwm > Tam sim no koj tuaj yeem tsim Docker dluab hauv werf siv Dockerfile li niaj zaus
Tam sim no koj tuaj yeem tsim Docker dluab hauv werf siv Dockerfile li niaj zaus
Zoo dua lig dua tsis tau. Los yog yuav ua li cas peb yuav luag ua yuam kev loj los ntawm tsis muaj kev txhawb nqa rau Dockerfiles li niaj zaus los tsim cov duab thov.
Peb mam li tham txog werf - GitOps cov nqi hluav taws xob uas koom nrog txhua qhov CI / CD thiab muab kev tswj hwm tag nrho daim ntawv thov kev ua neej, tso cai:
Niaj hnub no peb cov neeg sau khoom muaj ntau yam ntxiv, tab sis cov no yog thawj qhov kev ntshaw thiab kev xav.
Feem ntau, tsis xav txog ob zaug, peb tau siv peb tus kheej nrog cov lus programming peb siv (saib hauv qab no) thiab ntaus txoj kev mus rau kev siv tus kheej DSL! Raws li cov hom phiaj, nws tau npaj los piav qhia txog cov txheej txheem sib dhos hauv cov theem thiab txiav txim siab qhov kev vam meej ntawm cov theem no ntawm cov ntaub ntawv. Thiab ntxiv rau nws tus kheej sau, uas tig DSL rau hauv lub hom phiaj kawg - ib daim duab sib dhos. Thaum xub thawj lub DSL yog nyob rau hauv Ruby, tab sis raws li kev hloov mus rau Golang - qhov teeb tsa ntawm peb tus neeg sau tau pib piav qhia hauv YAML cov ntaub ntawv.
Qub config rau dapp hauv Ruby
Tam sim no config rau werf ntawm YAML
Lub mechanism ntawm lub collector kuj hloov raws sij hawm. Thaum xub thawj, peb tsuas yog tsim ib ntus Dockerfile ntawm ya los ntawm peb qhov kev teeb tsa, thiab tom qab ntawd peb pib khiav cov lus qhia sib dhos hauv cov thawv ib ntus thiab cog lus.
NB: Tam sim no, peb tus neeg sau khoom, uas ua haujlwm nrog nws tus kheej config (hauv YAML) thiab hu ua Stapel collector, twb tau tsim los rau hauv lub cuab yeej muaj zog heev. Nws cov lus piav qhia ntxaws tsim nyog cov khoom sib cais, thiab cov ntsiab lus tseem ceeb tuaj yeem pom hauv cov ntaub ntawv.
Kev paub txog qhov teeb meem
Tab sis peb paub, thiab tsis yog tam sim ntawd, tias peb tau ua yuam kev: peb tsis tau ntxiv lub peev xwm tsim cov duab ntawm tus qauv Dockerfile thiab muab lawv tso rau hauv tib qhov kawg-rau-kawg daim ntawv thov kev tswj hwm infrastructure (piv txwv li sau cov duab, xa thiab ntxuav lawv). Yuav ua li cas thiaj ua tau ib lub cuab yeej rau kev xa tawm hauv Kubernetes thiab tsis siv Dockerfile kev txhawb nqa, piv txwv li. txheej txheem los piav txog cov duab rau feem ntau cov haujlwm? ..
Es tsis txhob teb lo lus nug no, peb muab kev daws teeb meem. Yuav ua li cas yog tias koj twb muaj Dockerfile (los yog ib txheej ntawm Dockerfiles) thiab xav siv werf?
NB: Los ntawm txoj kev, vim li cas koj thiaj xav siv werf? Cov yam ntxwv tseem ceeb los mus rau hauv qab no:
daim ntawv thov kev tswj xyuas tag nrho suav nrog kev tu duab;
lub peev xwm los tswj kev sib dhos ntawm ntau cov duab ib zaug los ntawm ib qho kev teeb tsa;
Yog li, yog tias ua ntej peb yuav tau muab rov sau dua Dockerfile hauv peb qhov teeb tsa, tam sim no peb yuav zoo siab hais tias: "Cia werf tsim koj Dockerfiles!"
Yuav siv li cas?
Qhov kev siv tag nrho ntawm qhov tshwj xeeb no tau tshwm sim hauv kev tso tawm werf v1.0.3-beta.1. Lub hauv paus ntsiab lus tseem ceeb yog qhov yooj yim: tus neeg siv qhia txog txoj hauv kev mus rau Dockerfile uas twb muaj lawm hauv werf config, thiab tom qab ntawd khiav cov lus txib werf build... thiab qhov ntawd yog nws - werf yuav sau cov duab. Cia peb saib ib qho piv txwv abstract.
Cia peb tshaj tawm rau yav tom ntej Dockerfile hauv qhov project root:
FROM ubuntu:18.04
RUN echo Building ...
Thiab peb yuav tshaj tawm werf.yamluas siv qhov no Dockerfile:
Tam sim no nws tsis txaus siab siv qhov URL sab nraud hauv cov lus qhia ADD. Werf yuav tsis pib tsim kho dua thaum cov peev txheej ntawm qhov hloov pauv URL. Peb npaj yuav ntxiv qhov no sai sai.
2. Koj tsis tuaj yeem ntxiv .git rau daim duab
Feem ntau hais lus, ntxiv ib daim ntawv teev npe .git hauv daim duab - kev coj phem phem thiab ntawm no yog vim li cas:
Yog hais tias tus .git tseem nyob hauv daim duab kawg, qhov no ua txhaum txoj cai 12 yam app: Txij li cov duab kawg yuav tsum tau txuas mus rau ib qho kev cog lus, nws yuav tsum tsis txhob ua git checkout arbitrary cog lus.
.git nce qhov loj ntawm daim duab (lub chaw cia khoom tuaj yeem loj vim qhov tseeb tias cov ntaub ntawv loj tau ntxiv rau nws thiab tom qab ntawd tshem tawm). Qhov loj ntawm tsob ntoo ua haujlwm tsuas yog cuam tshuam nrog kev cog lus tshwj xeeb yuav tsis nyob ntawm keeb kwm ntawm kev ua haujlwm hauv Git. Nyob rau hauv cov ntaub ntawv no, ntxiv thiab tom qab tshem tawm .git los ntawm daim duab kawg yuav tsis ua haujlwm: daim duab tseem yuav tau txais ib txheej ntxiv - qhov no yog li cas Docker ua haujlwm.
Docker tuaj yeem pib qhov kev tsim kho tsis tsim nyog, txawm tias tib qhov kev cog lus tau tsim, tab sis los ntawm cov ntoo sib txawv. Piv txwv li, GitLab tsim cais cloned directory hauv /home/gitlab-runner/builds/HASH/[0-N]/yourproject thaum uas tig mus los ua ke yog enabled. Qhov ntxiv reassembly yuav yog vim lub fact tias cov directory .git yog sib txawv nyob rau hauv sib txawv cloned versions ntawm tib lub repository, txawm yog hais tias tib lub hom phiaj yog tsim.
Qhov kawg taw tes kuj muaj qhov tshwm sim thaum siv werf. Werf xav kom lub cache ua tau tam sim no thaum khiav qee cov lus txib (piv txwv li. werf deploy). Thaum cov lus txib no khiav, werf suav cov npe kos npe rau cov duab teev hauv werf.yaml, thiab lawv yuav tsum nyob rau hauv lub rooj sib txoos cache - txwv tsis pub cov lus txib yuav tsis tuaj yeem ua haujlwm ntxiv. Yog hais tias theem kos npe nyob ntawm cov ntsiab lus .git, tom qab ntawd peb tau txais lub cache uas tsis ruaj khov rau kev hloov pauv hauv cov ntaub ntawv tsis cuam tshuam, thiab werf yuav tsis tuaj yeem zam txim rau qhov kev saib xyuas no (kom paub meej ntxiv, saib cov ntaub ntawv).
Feem ntau tsuas yog ntxiv qee cov ntaub ntawv tsim nyog los ntawm cov lus qhia ADD nyob rau hauv txhua rooj plaub, tsub kom cov efficiency thiab kev cia siab ntawm tus sau Dockerfile, thiab kuj txhim kho kev ruaj ntseg ntawm cov cache sau rau qhov no Dockerfile, rau kev hloov pauv tsis cuam tshuam hauv Git.
Qhov no
Peb txoj hauv kev pib los sau peb tus kheej tsim rau cov kev xav tau tshwj xeeb yog qhov nyuaj, ncaj ncees thiab ncaj ncees: es tsis txhob siv cov crutches rau saum tus qauv Dockerfile, peb tau sau peb cov kev daws teeb meem nrog kev cai syntax. Thiab qhov no muaj nws qhov zoo: Stapel collector copes nrog nws txoj hauj lwm zoo kawg nkaus.
Txawm li cas los xij, nyob rau hauv tus txheej txheem ntawm kev sau ntawv peb tus kheej tsim, peb tsis pom qhov kev txhawb nqa rau Dockerfiles uas twb muaj lawm. Qhov tsis txaus ntseeg no tau raug kho tam sim no, thiab yav tom ntej peb npaj yuav tsim kev txhawb nqa Dockerfile nrog rau peb cov kev cai Stapel tsim rau kev sib dhos thiab kev sib dhos siv Kubernetes (piv txwv li kev sib dhos ntawm cov neeg sib tw hauv Kubernetes, zoo li ua tiav hauv kaniko).
Yog li, yog tias koj dheev muaj ob peb Dockerfiles dag nyob ib puag ncig ... sim nws werf!
PS Daim ntawv teev cov ntaub ntawv ntawm lub ncauj lus