Docker build ma gaaro ku-tiirsanaan gaar ah: hubi tan
Xirmo gaar ah oo martigeliyaha heli karo ayaa weli ku dhici kara gudaha build-ka. Magaca builder-ka, caddee wadada, ka dibna ku dheji token-ka sida build secret.
Xirmo gaar ah oo kombuyuutarkaaga si fudud looga xalliyo ayaa ku dhici kara gudaha build-ka 404 ama waqti-dhaqaaq, Dockerfile-na marar dhif ah ayuu sabab u yahay. Tallaabada build-ku waxay ku shaqeysaa meel magac shabakadeed kale, oo leh aragti DNS kale iyo kayd aqoonsi kale marka loo eego shell-ka aad ku tijaabisay. Mar ku tallaabo hubintan si taxane ah oo joogso marka ugu horreysa ee dhiciso, maxaa yeelay hubin kasta oo dambe waxay u qaadataa in tii hore gudubtay. Tallaabo kastaa waxay sheegtaa amarka go’aaminaya arrinta.
Ku bilow magaca builder-ka, ma aha Dockerfile
BuildKit wuxuu noqon karaa mid maxalli ah, konteenar gudihiisa ama mashiin kale, mid kastaa wuxuu leeyahay shabakadiisa caadiga ah. Socodsii docker buildx ls oo akhri noodhka xiddigta lagu calaamadeeyay ka hor inta aadan wax beddelin. Hal docker-container darawal ama builder daruuro ah lama wadaago wadada gaarka ah ee kombuyuutarkaaga sababtoo ah kaliya waxaad amarka halkaas ku qortay. Haddii builder-ka firfircoon uu fog yahay, hubin kasta oo hadhay waa in lagu sameeyaa martigeliyahaas, ma aha shaqadaada.
Builder-ku sidoo kale wuxuu qaataa habeynta resolver-ka iyo doorsoomayaasha proxyu gaar ah. Labaduba waxaa la akhriyaa waqtiga build-ka oo lama dhaxlo terminal-ka bilaabay build-ka.
Caddee wadada shabakada gudaha tallaabada build-ka
Qor tallaabo hal-mar ah oo xallisa martigeliyaha ku-tiirsanaanta oo furta xiriir u socda. Kani waa tijaabada kaliya ee ka jawaabta su’aasha builder-ka, ma aha shell-kaaga.
FROM alpine:3.20
RUN apk add --no-cache curl bind-tools && getent hosts registry.example.internal && curl -sS -o /dev/null -w "%{http_code}
" https://registry.example.internal/simple/
Ku dhis faylkaas isla builder-kaas, qaabka shabakada iyo isla secret mounts-ka uu isticmaalo build-kaaga dhabta ah: docker buildx build --builder remote0 -f Dockerfile.probe --progress=plain .. Haddii getent waxba ma daabacdo, cilladdu waxay ku jirtaa xallinta magacyada oo ma jiro aqoonsi hagaajin kara. Haddii magacu xallimo laakiin curl sheegto waqti-dhaqaaq, carqaladdu waa wadada ama siyaasadda bixidda ee hortaalla diiwaanka.
Tirtir baaritaanka isla marka uu jawaabo. Waa tallaabo lagu ogaado cudurka oo waa in aan marnaba la calaamadeeyo ama la riixo.
Ku dheji aqoonsiga halkii aad koobi lahayd
Marka wadadu shaqeyso, xaqiijintu waa cilladda xigta ee safka. BuildKit secret mount-ku wuxuu fayl u bandhigaa hal RUN tallaabo isagoon ku qorin lakab, taas waa waxa uu u baahan yahay qalabka ku-tiirsanaanta iyo waxa aan image-ku ahayn inuu hayo.
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm ci --omit=dev
Sirta waa in laga soo saaro Dockerfile-ka bannaankiisa: docker buildx build --secret id=npmrc,src=/home/me/.npmrc .. Faylku wuxuu ku sii jiraa macmiilka oo marnaba ma galo taariikhda image-ka. Hal ARG ama ENV oo isla token-kaas wata ma qabtaan shaqadan, maxaa yeelay labaduba waxaa lagu diiwaangeliyaa habeynta image-ka.
Image aan root ahayn wuxuu u baahan yahay wadadiisa bartilmaameed, tusaale ahaan /home/app/.npmrc ama faylka u dhigma pip, Maven ama Cargo. Bartilmaameedka mount-ku waa inuu la jaanqaado isticmaalaha socodsiiya amarka, haddii kale qalabku wuxuu sheegan doonaa fayl habeyn maqan oo dhab ahaan jira.
Baadh waxa qalabka ku-tiirsanaantu ku reebo image-ka
Mount ku meel gaar ah wuxuu aqoonsiga ka ilaaliyaa lakab, laakiin kama horjoogsado qalabka inuu wax kale qoro. Maareeyayaasha xirmooyinku waxay reebaan faylal lock, galalka cache iyo mararka qaar cinwaanka diiwaanka ee la xalliyay.
Akhri nidaamka faylalka dhammaaday halkii aad Dockerfile-ka aamini lahayd. docker history --no-trunc image:tag wuxuu taxaa amarka kasta oo lakab, iyo docker run --rm image:tag sh -c "ls -a /root" wuxuu muujinayaa waxa ku hadhay konteenarka socda. Xitaa marka faylku kaliya la dhejiyay, token lagu qoray sadarka log inta npm ci socoto wali waa daadasho.
Akhri sidoo kale log-ga build-ka, maxaa yeelay --progress=plain wuxuu daabacaa soosaarka amarrada si qoraal ah. Haddii token-ku halkaas ka muuqdo, beddel ka hor wax kasta oo kale oo ku gudbi fayl uu qalabku aamusnaan u akhriyo.
Xaqiiji in image-ka socodka aanu mar dambe u baahnayn wadada gaarka ah
Build-ka iyo barnaamijka socda waa laba macaamil oo kala duwan oo isla ku-tiirsanaan ah, oo kaliya kan ugu horreeya ayaa u baahan wadada gaarka ah. Image dhammaaday waa inuu bilaabmaa, xalliyaa ku-tiirsanaantiisa socodka oo u adeegaa taraafikada isagoon lahayn aqoonsiga build-ka.
Ku tijaabi meel aan diiwaanka gaarka ah laga gaari karin, ama si fudud u bilow konteenarka --network none oo xaqiiji inuu soo baxo isagoon lahayn secret-ka la dhejiyay. Konteenar kaliya bilaabma marka build secret-ku jiro wali wuxuu ku xiran yahay deegaanka build-ka.
Haddii konteenarku dhab ahaan u baahan yahay diiwaanka waqtiga socodka, taasi waa go’aan gelitaan oo gooni ah, oo meeshiisu waa kaydka sirta ee kormeeraha, ma aha build-ka. Diiwaangeli labada waddo si gooni ah si aan qofna u isku dayin inuu ku hagaajiyo jiidka socodka calaamad build. Marka shanta hubin oo dhan gudbaan, calaamadda asalka ahi waxay leedahay sabab magac leh lakab kasta, ma aha mala-awal ku saabsan shabakada Docker.