DOKKERIZE nämedigi bilen gyzyklanyp bilersiňiz. DApp proýektiňizi konteýnerlemek üçin Docker-i ulanmagy aňladýar.
Docker, programmalary ösdürmek, ibermek we işletmek üçin açyk platforma. Docker programma üpjünçiligini çalt üpjün edip bilersiňiz, programmalaryňyzy infrastrukturaňyzdan aýyrmaga mümkinçilik berýär.
Docker, programmaňyzy “ CONTAINER” diýilýän gaty izolirlenen gurşawda ýekeje gurama hökmünde gaplamaga we işletmäge mümkinçilik berýär.
Konteýnerler ýeňil we programmany işletmek üçin zerur zatlary öz içine alýar, şonuň üçin öý eýesine gurnalan zatlara bil baglamagyň zerurlygy ýok. Işleýän wagtyňyz konteýnerleri paýlaşyp bilersiňiz we paýlaşýanlaryňyzyň hemmesiniň birmeňzeş işleýän konteýner alýandygyna göz ýetiriň.
Mysal üçin, siz we kärdeşleriňiz Node.js we Hardhat ulanýan dApp taslamasynyň üstünde işleýärsiňiz. Ilki bilen, kärdeşleriňiziň programmany ýerli derejede işletmezden ozal öz ulgamlaryna Node.js we Hardhat gurnamalydygyny bilip, taslamany ýerli enjamyňyzda gurnadyňyz. Indi, kärdeşleriňiziň biriniň Node.js we Hardhat bilen gabat gelmeýän enjam ulanýandygyny göz öňüne getireliň. Bu meseläni nädip çözüp bilersiňiz?
“Docker” -iň kömegi bilen, programmaňyzy ähli baglylyklar bilen birlikde islendik operasiýa ulgamynda işläp bilýän ýekeje konteýnerde gaplap bilersiňiz. Bu programma üpjünçiligini ýa-da garaşlylygy dürli maşynlara aýratyn gurmak meselesini çözýär.
Arzaňyzy konteýner edeniňizden soň, ony nädip işletmeli?
Öň tarapy dörediji hökmünde, täze React programmasyny açanyňyzda, adatça npx create-react-app
ýa-da npm init vite@latest
işleýärsiňiz. Bar bolan taslama üçin, adatça ýerli görnüşde işlemek üçin git pull
soň npm install
bilen işledersiňiz. Şonuň ýaly-da, konteýner işletmek üçin konteýner şekili diýilýän zat gerek.
Konteýner şekili, programmaňyzy konteýneriň içinde işletmek üçin zerur bolan ähli faýllary, ikilikleri, kitaphanalary we konfigurasiýalary öz içine alýan standartlaşdyrylan bukjadyr. Everythinghli zady bir ýere jemlän ýaly, islendik gurşawda yzygiderli hereket edip biler.
Konteýner şekili üçin aşakda serediň:
Bu bölümde programmaňyzy konteýnerleşdirmegi we paýlaşmagy öwrenersiňiz.
Kök katalogyňyzda bu buýruk buýrugyny ulanyp dokeri işe giriziň:
docker init
Tekliplere jogap beriň
? What application platform does your project use? Node ? What version of Node do you want to use? 20.16.0 ? Which package manager do you want to use? npm ? Do you want to run "npm run build" before starting your server? No ? What command do you want to use to start the app? ["npm", "run", "dev"] ? What port does your server listen on? 5173
Katalogyňyzda .dockerignore
, compose.yaml
we DockerFile
atly üç sany goşmaça faýly görersiňiz
Dockerfil
: Dockerfile, ulanyjynyň şekil ýygnamak üçin buýruk setirine çagyryp biljek ähli buýruklaryny öz içine alýan tekst resminamasydyr.compose.yaml
: “Compose” faýly ýa-da compose.yaml
faýly, “konteýner” programmalaryny nädip kesgitlemelidigi barada “Compose” spesifikasiýasy tarapyndan göz öňünde tutulan düzgünlere eýerýär..dockerignore
: Bu faýl gurluş we kontekstdäki faýllary we kataloglary aýyrýar. Dockerfile
iň içinde faýly aýyryň we aşakdakylary goşuň:
# syntax=docker/dockerfile:1 ARG NODE_VERSION=20.16.0 FROM node:${NODE_VERSION}-alpine # Use development node environment by default. ENV NODE_ENV development WORKDIR /app # Copy package.json and package-lock.json to the working directory COPY package.json package-lock.json ./ # Install dependencies RUN npm install # Copy the rest of the source files into the image COPY . . # Change ownership of the /app directory to the node user RUN chown -R node:node /app # Switch to the node user USER node # Ensure node_modules/.bin is in the PATH ENV PATH /app/node_modules/.bin:$PATH # Expose the port that the application listens on EXPOSE 5173 # Run the application CMD ["npm", "run", "dev"]
Konteýner şekiliňizi şuny ulanyp guruň:
docker build -t <your-image-name> .
Konteýner şekiliňizi görmek üçin dok iş stoluňyza giriň, aşakda görkezilişi ýaly Images
basyň
ýa-da bu buýruk buýrugyny ulanyp bilersiňiz,
docker images
konteýner şekiliňizi terminalyňyzda görmek üçin
Suraty işlediň:
docker run -p 5173:5173 <your-image-name>
Munuň ýaly çykyşy görmeli:
> [email protected] dev > vite VITE v5.4.2 ready in 222 ms ➜ Local: http://localhost:5173/ ➜ Network: http://172.17.0.2:5173/
Ammar döretmek düwmesini saýlaň.
Ammaryňyzy şol bir konteýner şekiliniň ady bilen atlandyryň. Görünýänligiň köpçülige göz ýetiriň.
Dörediň .
Buýruk setirini ulanyp, Docker Hub-a giriň
docker login -u <YOUR USERNAME>
Parolyňyzy giriziň
Typazanyňyzda parolyňyz görünmez
getting-started
surata täze at bermek üçin docker tag
buýrugyny ulanyň. YOUR-USER-NAME
Docker ID bilen çalyşyň:
Bu
denied: requested access to the resource is denied
.Muny düzetmek üçin,
docker login
ulanyp, enter basyň.- Ondan soň brauzeriňize ugrukdyrylarsyňyz,
- OTP terminalyňyzy göçüriň we giriziň,
- CONFIRM basyň
- şekili gaýtalaň
Şular ýaly çykyşy görersiňiz:
Bu, siziň suratyňyzyň gurlandygyny we reýestre girizilendigini görkezýär. Toparyňyz indi bu suraty çekip, programmany ýerli enjamda işledip biler.
Konteýner suratyňyzy dok stoluňyzdaky ýa-da dok merkezindäki gözleg panelinde gözläp bilersiňiz.
Port dawasy :
Roralňyşlyk : port eýýäm ulanylan bolsa.
Çözgüt : Porty ulanyp, prosesi kesgitledi we aşakdaky buýruklary ulanyp bes etdi:
# Find the process using port 8000 lsof -i :8000 # Kill the process (replace <PID> with the actual process ID found from the previous command) kill -9 <PID>
Ativea-da bolmasa, Docker konteýnerini başga portda işledip bilersiňiz:
docker run -p 8001:8000 <your-image-name>
Programmany täzeläň
Programmaňyzy täzelän zadyňyz, mysal üçin sintaksis ýa-da funksiýa üýtgedseňiz,
Doker stoluňyzy saklaň, Containers
basyň
Porty duruzyň we ýok etmek düwmesine basyň
docker build
buýrugyny ulanyp, Programmany täzeden guruň
docker build -t <your-image-name> .
Programmany täzeden işlediň
docker run -p 5173:5173 <your-image-name>
Bu gollanmany ýerine ýetirip, programmaňyzy we oňa baglylyklary aňsatlyk bilen bir konteýnerde gaplap bilersiňiz, toparyňyz bilen paýlaşyp bilersiňiz we islendik enjamda aňsatlyk bilen işledip bilersiňiz. Bu diňe bir hyzmatdaşlygy güýçlendirmek bilen çäklenmän, daşky gurşawy sazlamak we utgaşyklyk bilen baglanyşykly meseleleri hem ýeňilleşdirýär.