Tupu njirimara abanye na mmepụta, n'ụbọchị ndị a nke ndị na-egwu egwu mgbagwoju anya na CI/CD, e nwere ụzọ dị anya isi na ntinye aka na ule na nnyefe. Na mbụ, ị nwere ike bulite faịlụ ọhụrụ site na FTP (ọ dịghị onye na-eme nke ahụ ọzọ, nri?), na usoro "nkwanye" were sekọnd. Ugbu a ịkwesịrị ịmepụta arịrịọ njikọ wee chere ogologo oge maka njirimara ahụ iru ndị ọrụ.
Akụkụ nke ụzọ a na-ewu ihe oyiyi Docker. Mgbe ụfọdụ mgbakọ ahụ na-ewe nkeji, mgbe ụfọdụ iri nkeji, bụ́ nke a na-apụghị ịkpọ nke ọma. N'isiokwu a, anyị ga-ewere ngwa dị mfe nke anyị ga-etinye n'ime ihe oyiyi, tinye ọtụtụ ụzọ iji mee ka ụlọ ahụ dị ngwa, ma lelee nuances nke ụzọ ndị a si arụ ọrụ.
Anyị nwere ahụmịhe dị mma n'ịmepụta na ịkwado webụsaịtị mgbasa ozi:
Anyị na-ebuga na GitLab. Anyị na-anakọta onyonyo, kwaba ha na ndekọ GitLab wee bupụ ha na mmepụta. Ihe kachasị ogologo na ndepụta a bụ ikpokọta ihe oyiyi. Dịka ọmụmaatụ: na-enweghị njikarịcha, ụlọ azụ azụ ọ bụla were nkeji iri na anọ.
N'ikpeazụ, ọ bịara doo anya na anyị apụghịzi ịdị ndụ otú a, anyị wee nọdụ ala chọpụta ihe mere ihe oyiyi ahụ ji ewe ogologo oge iji nakọta. N'ihi ya, anyị jisiri ike belata oge mgbakọ ahụ na 30 sekọnd!
Maka edemede a, ka a ghara ijikọta ya na gburugburu ebe ncheta, ka anyị lelee ihe atụ nke ikpokọta ngwa Angular efu. Yabụ, ka anyị mepụta ngwa anyị:
ng n app
Tinye PWA na ya (anyị na-aga n'ihu):
ng add @angular/pwa --project app
Ka a na-ebudata ngwugwu nde npm, ka anyị chọpụta ka onyonyo docker si arụ ọrụ. Docker na-enye ikike ịkwakọ ngwa ma mee ya na ebe dịpụrụ adịpụ nke a na-akpọ akpa. N'ihi ikewapụ, ị nwere ike na-agba ọtụtụ akpa n'otu oge n'otu sava. Ngwongwo dị ọkụ karịa igwe mebere n'ihi na ha na-agba ọsọ na kernel sistemụ. Iji jiri ngwa anyị na-ebu akpa, anyị ga-ebu ụzọ mepụta onyonyo nke anyị ga-etinye ihe niile dị mkpa maka ngwa anyị iji na-agba ọsọ. N'ezie, onyonyo bụ nnomi nke sistemụ faịlụ. Dịka ọmụmaatụ, were Dockerfile:
FROM node:12.16.2
WORKDIR /app
COPY . .
RUN npm ci
RUN npm run build --prod
Dockerfile bụ usoro ntuziaka; Site n'ime nke ọ bụla n'ime ha, Docker ga-echekwa mgbanwe na sistemụ faịlụ wee kpuchie ha na ndị gara aga. Otu ọ bụla na-emepụta oyi akwa nke ya. Na emechara oyiyi bụ n'ígwé jikọtara ọnụ.
Ihe dị mkpa ịmara: Docker oyi akwa ọ bụla nwere ike cache. Ọ bụrụ na ọ nweghị ihe gbanwere kemgbe ụlọ ikpeazụ, mgbe ahụ kama ime iwu ahụ, docker ga-ewere oyi akwa dị njikere. Ebe ọ bụ na nnukwu mmụba na-ewu ngwa ngwa ga-abụ n'ihi iji cache, mgbe ị na-atụle ọsọ ọsọ, anyị ga-aṅa ntị kpọmkwem iji wuo ihe oyiyi na ebe nchekwa dị njikere. Yabụ, nzọụkwụ site nzọụkwụ:
- Anyị na-ehichapụ foto na mpaghara ka ọsọ ndị gara aga ghara imetụta ule ahụ.
docker rmi $(docker images -q)
- Anyị na-amalite ihe owuwu ahụ maka oge mbụ.
time docker build -t app .
- Anyị na-agbanwe faịlụ src/index.html - anyị na-eṅomi ọrụ nke mmemme.
- Anyị na-arụ ọrụ ahụ ugboro abụọ.
time docker build -t app .
Ọ bụrụ na ahaziri gburugburu ebe obibi maka ihe onyonyo n'ụzọ ziri ezi (karịa na nke dị n'okpuru), mgbe ahụ, mgbe ụlọ ahụ malitere, Docker ga-enwelarị ụyọkọ cache n'ime ụgbọ. Ọrụ anyị bụ ịmụta ka esi eji cache eme ihe ka ụlọ ahụ wee gaa ngwa ngwa o kwere mee. Ebe anyị na-eche na ịrụ ụlọ na-enweghị ebe nchekwa na-eme naanị otu ugboro — nke mbụ — anyị nwere ike ileghara etu oge mbụ ahụ si dị nwayọ. Na ule, nke abụọ na-agba ọsọ nke ụlọ ahụ dị anyị mkpa, mgbe cache na-ekpo ọkụ na anyị dị njikere ime achịcha anyị. Agbanyeghị, ụfọdụ ndụmọdụ ga-emetụtakwa ihe owuwu nke mbụ.
Ka anyị tinye Dockerfile akọwara n'elu na nchekwa ọrụ wee bido ihe nrụpụta. Ejikọkọla ndepụta niile maka ịdị mfe ọgụgụ.
$ time docker build -t app .
Sending build context to Docker daemon 409MB
Step 1/5 : FROM node:12.16.2
Status: Downloaded newer image for node:12.16.2
Step 2/5 : WORKDIR /app
Step 3/5 : COPY . .
Step 4/5 : RUN npm ci
added 1357 packages in 22.47s
Step 5/5 : RUN npm run build --prod
Date: 2020-04-16T19:20:09.664Z - Hash: fffa0fddaa3425c55dd3 - Time: 37581ms
Successfully built c8c279335f46
Successfully tagged app:latest
real 5m4.541s
user 0m0.000s
sys 0m0.000s
Anyị na-agbanwe ọdịnaya nke src/index.html wee mee ya nke ugboro abụọ.
$ time docker build -t app .
Sending build context to Docker daemon 409MB
Step 1/5 : FROM node:12.16.2
Step 2/5 : WORKDIR /app
---> Using cache
Step 3/5 : COPY . .
Step 4/5 : RUN npm ci
added 1357 packages in 22.47s
Step 5/5 : RUN npm run build --prod
Date: 2020-04-16T19:26:26.587Z - Hash: fffa0fddaa3425c55dd3 - Time: 37902ms
Successfully built 79f335df92d3
Successfully tagged app:latest
real 3m33.262s
user 0m0.000s
sys 0m0.000s
Iji hụ ma ọ bụrụ na anyị nwere onyonyo a, gbaa iwu ahụ docker images
:
REPOSITORY TAG IMAGE ID CREATED SIZE
app latest 79f335df92d3 About a minute ago 1.74GB
Tupu wuo ụlọ, docker na-ewere faịlụ niile dị ugbu a wee ziga ha na daemon ya Sending build context to Docker daemon 409MB
. A kọwapụtara ọnọdụ ihe nrụpụta dị ka arụmụka ikpeazụ na iwu iwu ụlọ. N'ọnọdụ anyị, nke a bụ akwụkwọ ndekọ aha ugbu a - ".", - na Docker na-adọkpụrụ ihe niile anyị nwere na folda a. 409 MB dị ọtụtụ: ka anyị chee echiche otu esi edozi ya.
Na-ebelata ihe ndị gbara ya gburugburu
Iji belata ihe gbara ya gburugburu, enwere nhọrọ abụọ. Ma ọ bụ tinye faịlụ niile achọrọ maka mgbakọ n'ime folda dị iche wee tụọ ọnọdụ docker na nchekwa a. Nke a nwere ike ọ gaghị adị mma mgbe niile, ya mere ọ ga-ekwe omume ịkọwapụta ihe ndị ọzọ: ihe na-ekwesịghị ịdọrọ n'ime ọnọdụ. Iji mee nke a, tinye faịlụ .dockerignore na oru ngo ma gosi ihe na-adịghị mkpa maka ihe owuwu:
.git
/node_modules
ma megharịa ihe nrụpụta ahụ ọzọ:
$ time docker build -t app .
Sending build context to Docker daemon 607.2kB
Step 1/5 : FROM node:12.16.2
Step 2/5 : WORKDIR /app
---> Using cache
Step 3/5 : COPY . .
Step 4/5 : RUN npm ci
added 1357 packages in 22.47s
Step 5/5 : RUN npm run build --prod
Date: 2020-04-16T19:33:54.338Z - Hash: fffa0fddaa3425c55dd3 - Time: 37313ms
Successfully built 4942f010792a
Successfully tagged app:latest
real 1m47.763s
user 0m0.000s
sys 0m0.000s
607.2 KB dị mma karịa 409 MB. Anyị belatara nha onyonyo site na 1.74 ruo 1.38 GB:
REPOSITORY TAG IMAGE ID CREATED SIZE
app latest 4942f010792a 3 minutes ago 1.38GB
Ka anyị gbalịa ibelata nha onyonyo n'ihu.
Anyị na-eji Alpine
Ụzọ ọzọ ị ga-esi chekwaa na nha onyonyo bụ iji obere onyonyo nne na nna. Ihe oyiyi nne na nna bụ ihe oyiyi na ndabere nke a na-akwado ihe oyiyi anyị. A na-akọwapụta oyi akwa ala site na iwu ahụ FROM
na Dockerfile. N'ọnọdụ anyị, anyị na-eji ihe oyiyi dabere na Ubuntu nke etinyelarị nodejs. Ma ọ tụrụ ...
$ docker images -a | grep node
node 12.16.2 406aa3abbc6c 17 minutes ago 916MB
... fọrọ nke nta ka a gigabyte. Ị nwere ike belata ụda nke ukwuu site na iji onyonyo dabere na Alpine Linux. Alpine bụ obere Linux. Onyonyo docker maka nodejs dabere na alpine tụrụ naanị 88.5 MB. Ya mere, ka anyị dochie anya ihe oyiyi anyị dị ndụ n'ime ụlọ:
FROM node:12.16.2-alpine3.11
RUN apk --no-cache --update --virtual build-dependencies add
python
make
g++
WORKDIR /app
COPY . .
RUN npm ci
RUN npm run build --prod
Anyị kwesịrị ịwụnye ihe ụfọdụ dị mkpa iji wuo ngwa ahụ. Ee, Angular anaghị arụ ọrụ na-enweghị Python ¯(°_o)/n
Mana nha onyonyo dara na 150 MB:
REPOSITORY TAG IMAGE ID CREATED SIZE
app latest aa031edc315a 22 minutes ago 761MB
Ka anyị gaa n'ihu.
Mgbakọ multistage
Ọ bụghị ihe niile dị na oyiyi ahụ bụ ihe anyị chọrọ na mmepụta.
$ docker run app ls -lah
total 576K
drwxr-xr-x 1 root root 4.0K Apr 16 19:54 .
drwxr-xr-x 1 root root 4.0K Apr 16 20:00 ..
-rwxr-xr-x 1 root root 19 Apr 17 2020 .dockerignore
-rwxr-xr-x 1 root root 246 Apr 17 2020 .editorconfig
-rwxr-xr-x 1 root root 631 Apr 17 2020 .gitignore
-rwxr-xr-x 1 root root 181 Apr 17 2020 Dockerfile
-rwxr-xr-x 1 root root 1020 Apr 17 2020 README.md
-rwxr-xr-x 1 root root 3.6K Apr 17 2020 angular.json
-rwxr-xr-x 1 root root 429 Apr 17 2020 browserslist
drwxr-xr-x 3 root root 4.0K Apr 16 19:54 dist
drwxr-xr-x 3 root root 4.0K Apr 17 2020 e2e
-rwxr-xr-x 1 root root 1015 Apr 17 2020 karma.conf.js
-rwxr-xr-x 1 root root 620 Apr 17 2020 ngsw-config.json
drwxr-xr-x 1 root root 4.0K Apr 16 19:54 node_modules
-rwxr-xr-x 1 root root 494.9K Apr 17 2020 package-lock.json
-rwxr-xr-x 1 root root 1.3K Apr 17 2020 package.json
drwxr-xr-x 5 root root 4.0K Apr 17 2020 src
-rwxr-xr-x 1 root root 210 Apr 17 2020 tsconfig.app.json
-rwxr-xr-x 1 root root 489 Apr 17 2020 tsconfig.json
-rwxr-xr-x 1 root root 270 Apr 17 2020 tsconfig.spec.json
-rwxr-xr-x 1 root root 1.9K Apr 17 2020 tslint.json
Site n'enyemaka nke docker run app ls -lah
anyị wepụtara akpa dabere na onyonyo anyị app
ma mee iwu ahụ n'ime ya ls -lah
, mgbe nke ahụ gasịrị, akpa ahụ rụchara ọrụ ya.
Na mmepụta anyị chọrọ naanị folda dist
. N'okwu a, a ga-enye faịlụ ndị ahụ n'ụzọ ụfọdụ. Ị nwere ike ịgba ọsọ ụfọdụ sava HTTP na nodejs. Mana anyị ga-eme ka ọ dị mfe. Chee otu okwu Russian nwere mkpụrụedemede anọ "y". Right! Ynzhynyksy. Ka anyị were nginx were foto were, tinye folda n'ime ya dist
na obere nhazi:
server {
listen 80 default_server;
server_name localhost;
charset utf-8;
root /app/dist;
location / {
try_files $uri $uri/ /index.html;
}
}
Nrụpụta ọtụtụ ọkwa ga-enyere anyị aka ime ihe a niile. Ka anyị gbanwee Dockerfile anyị:
FROM node:12.16.2-alpine3.11 as builder
RUN apk --no-cache --update --virtual build-dependencies add
python
make
g++
WORKDIR /app
COPY . .
RUN npm ci
RUN npm run build --prod
FROM nginx:1.17.10-alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/static.conf /etc/nginx/conf.d
COPY --from=builder /app/dist/app .
Ugbu a, anyị nwere ntụziaka abụọ FROM
na Dockerfile, onye ọ bụla n'ime ha na-agba ọsọ dị iche iche wuo usoro. Anyị kpọrọ nke mbụ builder
, mana malite na nke ikpeazụ SITE, a ga-akwado foto ikpeazụ anyị. Nzọụkwụ ikpeazụ bụ iji nginx detuo ihe ochie nke ọgbakọ anyị na nzọụkwụ gara aga n'ime onyonyo ikpeazụ. Ogo onyonyo a ebelatala nke ukwuu:
REPOSITORY TAG IMAGE ID CREATED SIZE
app latest 2c6c5da07802 29 minutes ago 36MB
Ka anyị jiri ihe onyonyo anyị mee akpa ahụ wee hụ na ihe niile na-arụ ọrụ:
docker run -p8080:80 app
N'iji nhọrọ -p8080: 80, anyị zigara ọdụ ụgbọ mmiri 8080 na igwe nnabata anyị na ọdụ ụgbọ mmiri 80 n'ime akpa ebe nginx na-agba. Mepee na ihe nchọgharị
Mbelata nha onyonyo site na 1.74 GB gaa na 36 MB na-ebelata nke ukwuu oge ọ na-ewe iji wepụta ngwa gị na nrụpụta. Ma ka anyị laghachi azụ n'oge mgbakọ.
$ time docker build -t app .
Sending build context to Docker daemon 608.8kB
Step 1/11 : FROM node:12.16.2-alpine3.11 as builder
Step 2/11 : RUN apk --no-cache --update --virtual build-dependencies add python make g++
---> Using cache
Step 3/11 : WORKDIR /app
---> Using cache
Step 4/11 : COPY . .
Step 5/11 : RUN npm ci
added 1357 packages in 47.338s
Step 6/11 : RUN npm run build --prod
Date: 2020-04-16T21:16:03.899Z - Hash: fffa0fddaa3425c55dd3 - Time: 39948ms
---> 27f1479221e4
Step 7/11 : FROM nginx:stable-alpine
Step 8/11 : WORKDIR /app
---> Using cache
Step 9/11 : RUN rm /etc/nginx/conf.d/default.conf
---> Using cache
Step 10/11 : COPY nginx/static.conf /etc/nginx/conf.d
---> Using cache
Step 11/11 : COPY --from=builder /app/dist/app .
Successfully built d201471c91ad
Successfully tagged app:latest
real 2m17.700s
user 0m0.000s
sys 0m0.000s
Ịgbanwe usoro nke n'ígwé
Akpadoro nzọụkwụ atọ mbụ anyị (ndụmọdụ Using cache
). Na nzọụkwụ nke anọ, a na-edepụtaghachi faịlụ ọrụ niile ma na ntinye nke ise etinyere RUN npm ci
- ihe dị ka 47.338s. Kedu ihe kpatara ịwụnye ndabere mgbe ọ bụla ma ọ bụrụ na ha na-agbanwe adịkarịghị? Ka anyị chọpụta ihe kpatara na echekwaghị ha. Isi ihe bụ na Docker ga-elele oyi akwa site na oyi akwa iji hụ ma iwu na faịlụ ndị metụtara ya agbanweela. Na nzọụkwụ nke anọ, anyị na-eṅomi faịlụ niile nke ọrụ anyị, na n'ime ha, n'ezie, e nwere mgbanwe, ya mere Docker ọ bụghị nanị na-ewepụ oyi akwa a na cache, kamakwa niile sochirinụ! Ka anyị mee obere mgbanwe na Dockerfile.
FROM node:12.16.2-alpine3.11 as builder
RUN apk --no-cache --update --virtual build-dependencies add
python
make
g++
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build --prod
FROM nginx:1.17.10-alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/static.conf /etc/nginx/conf.d
COPY --from=builder /app/dist/app .
Nke mbụ, package.json na pack-lock.json na-e depụtaghachi ya, mgbe ahụ, etinyere ihe ndabere, na naanị mgbe nke ahụ gasịrị, a na-eṅomi ọrụ ahụ dum. N'ihi ya:
$ time docker build -t app .
Sending build context to Docker daemon 608.8kB
Step 1/12 : FROM node:12.16.2-alpine3.11 as builder
Step 2/12 : RUN apk --no-cache --update --virtual build-dependencies add python make g++
---> Using cache
Step 3/12 : WORKDIR /app
---> Using cache
Step 4/12 : COPY package*.json ./
---> Using cache
Step 5/12 : RUN npm ci
---> Using cache
Step 6/12 : COPY . .
Step 7/12 : RUN npm run build --prod
Date: 2020-04-16T21:29:44.770Z - Hash: fffa0fddaa3425c55dd3 - Time: 38287ms
---> 1b9448c73558
Step 8/12 : FROM nginx:stable-alpine
Step 9/12 : WORKDIR /app
---> Using cache
Step 10/12 : RUN rm /etc/nginx/conf.d/default.conf
---> Using cache
Step 11/12 : COPY nginx/static.conf /etc/nginx/conf.d
---> Using cache
Step 12/12 : COPY --from=builder /app/dist/app .
Successfully built a44dd7c217c3
Successfully tagged app:latest
real 0m46.497s
user 0m0.000s
sys 0m0.000s
46 sekọnd kama nkeji 3 - ka mma! Usoro ziri ezi nke n'ígwé dị mkpa: mbụ anyị na-eṅomi ihe na-adịghị agbanwe agbanwe, mgbe ahụ ihe na-agbanwe adịkarịghị, na n'ikpeazụ ihe na-agbanwe mgbe.
Na-esote, okwu ole na ole gbasara ịchịkọta onyonyo na sistemụ CI/CD.
Iji onyonyo gara aga maka cache
Ọ bụrụ na anyị na-eji ụdị ngwọta SaaS maka ihe owuwu ahụ, mgbe ahụ cache Docker mpaghara nwere ike ịdị ọcha ma dị ọhụrụ. Iji nye docker ebe ọ ga-esi nweta akwa akwa, nye ya ihe oyiyi e wuru na mbụ.
Ka anyị were ọmụmaatụ iwulite ngwa anyị na GitHub Actions. Anyị na-eji nhazi a
on:
push:
branches:
- master
name: Test docker build
jobs:
deploy:
name: Build
runs-on: ubuntu-latest
env:
IMAGE_NAME: docker.pkg.github.com/${{ github.repository }}/app
IMAGE_TAG: ${{ github.sha }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Login to GitHub Packages
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
docker login docker.pkg.github.com -u $GITHUB_ACTOR -p $TOKEN
- name: Build
run: |
docker build
-t $IMAGE_NAME:$IMAGE_TAG
-t $IMAGE_NAME:latest
.
- name: Push image to GitHub Packages
run: |
docker push $IMAGE_NAME:latest
docker push $IMAGE_NAME:$IMAGE_TAG
- name: Logout
run: |
docker logout docker.pkg.github.com
A na-achịkọta onyonyo a wee kwaga na ngwugwu GitHub n'ime nkeji abụọ na sekọnd iri abụọ:
Ugbu a, ka anyị gbanwee ihe owuwu ahụ ka a na-eji cache dabere na onyonyo arụgoro na mbụ:
on:
push:
branches:
- master
name: Test docker build
jobs:
deploy:
name: Build
runs-on: ubuntu-latest
env:
IMAGE_NAME: docker.pkg.github.com/${{ github.repository }}/app
IMAGE_TAG: ${{ github.sha }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Login to GitHub Packages
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
docker login docker.pkg.github.com -u $GITHUB_ACTOR -p $TOKEN
- name: Pull latest images
run: |
docker pull $IMAGE_NAME:latest || true
docker pull $IMAGE_NAME-builder-stage:latest || true
- name: Images list
run: |
docker images
- name: Build
run: |
docker build
--target builder
--cache-from $IMAGE_NAME-builder-stage:latest
-t $IMAGE_NAME-builder-stage
.
docker build
--cache-from $IMAGE_NAME-builder-stage:latest
--cache-from $IMAGE_NAME:latest
-t $IMAGE_NAME:$IMAGE_TAG
-t $IMAGE_NAME:latest
.
- name: Push image to GitHub Packages
run: |
docker push $IMAGE_NAME-builder-stage:latest
docker push $IMAGE_NAME:latest
docker push $IMAGE_NAME:$IMAGE_TAG
- name: Logout
run: |
docker logout docker.pkg.github.com
Mbụ anyị kwesịrị ịgwa gị ihe mere eji malite iwu abụọ build
. Nke bụ eziokwu bụ na na mgbakọ multistage ihe oyiyi ga-esi na ya pụta ga-abụ nhazi nke ọkwa site na njedebe ikpeazụ. N'okwu a, a gaghị etinye n'ígwé si n'ígwé ndị gara aga na foto a. Ya mere, mgbe ị na-eji onyonyo ikpeazụ sitere na ụlọ gara aga, Docker agaghị enwe ike ịchọta ọkwa dị njikere iji wuo ihe oyiyi ahụ na nodejs (ogbo onye nrụpụta). Iji dozie nsogbu a, a na-emepụta ihe oyiyi etiti $IMAGE_NAME-builder-stage
a na-akwaga ya na ngwugwu GitHub ka e wee jiri ya mee ihe na-esote dị ka ebe nchekwa.
E wedara ngụkọta oge mgbakọ ahụ ka ọ bụrụ otu nkeji na ọkara. A na-eji ọkara nkeji na-ebuli foto ndị gara aga.
Ịhụ ụzọ
Ụzọ ọzọ ị ga-esi dozie nsogbu nke oghere Docker dị ọcha bụ ịkwaga ụfọdụ n'ígwé n'ime Dockerfile ọzọ, wuo ya iche, tinye ya n'ime ndekọ ndekọ ma jiri ya dịka nne na nna.
Anyị na-emepụta foto nodejs nke anyị iji wuo ngwa Angular. Mepụta Dockerfile.node n'ime oru ngo a
FROM node:12.16.2-alpine3.11
RUN apk --no-cache --update --virtual build-dependencies add
python
make
g++
Anyị na-anakọta ma kpalie onyonyo ọha na Docker Hub:
docker build -t exsmund/node-for-angular -f Dockerfile.node .
docker push exsmund/node-for-angular:latest
Ugbu a na isi Dockerfile anyị, anyị na-eji foto emechara:
FROM exsmund/node-for-angular:latest as builder
...
N'ihe atụ anyị, oge a na-ewu ụlọ ebelataghị, ma ihe oyiyi ndị e wuru tupu oge eruo nwere ike ịba uru ma ọ bụrụ na ị nwere ọtụtụ ọrụ ma tinye otu ịdabere na nke ọ bụla n'ime ha.
Anyị lere anya n'ọtụtụ ụzọ iji mee ka iwulite onyonyo docker ọsọ ọsọ. Ọ bụrụ na ịchọrọ ka nbunye ahụ gaa ngwa ngwa, nwaa iji nke a na ọrụ gị:
- ibelata ọnọdụ;
- iji obere ihe oyiyi nne na nna;
- mgbakọ multistage;
- na-agbanwe usoro ntuziaka dị na Dockerfile iji jiri cache mee ihe nke ọma;
- ịtọ ntọala cache na sistemụ CI / CD;
- mmalite okike ihe oyiyi.
Enwere m olileanya na ihe atụ a ga-eme ka ọ dokwuo anya ka Docker si arụ ọrụ, ma ị ga-enwe ike ịhazi nke ọma nke mbugharị gị. Iji jiri ihe atụ si n'akụkọ ahụ gwuo egwu, e mepụtala ebe nchekwa
isi: www.habr.com