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.
- Goýmalarda web programmalary, API-ler, ykjam programmalar we arkadaky hyzmatlar bar. Youazan koduňyzy, ulanýan kitaphanalaryňyzy we işlemegi üçin zerur konfigurasiýalary öz içine alýar.
- Operasiýa ulgamy (OS), tor sazlamasy, web serwerleri, maglumat bazasy we programmaňyz bilen aragatnaşyk saklaýan beýleki hyzmatlar ýaly infrastruktura. Şeýle hem, programmaňyzyň işleýän enjamlary ýa-da wirtual maşynlary bar.
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ýner
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.
Suratlar
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ň:
Amallar
Bu bölümde programmaňyzy konteýnerleşdirmegi we paýlaşmagy öwrenersiňiz.
Zerur şertler
- Docker Desktop -yň iň soňky wersiýasyny gurnadyňyz.
- Git müşderisini gurduň.
- Faýllary redaktirlemek üçin IDE ýa-da tekst redaktory bar. Docker Visual Studio C ode ulanmagy maslahat berýär.
Arzaňyzy saklaň
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
weDockerFile
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-dacompose.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/
Programmany paýlaşmak
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 üçindocker 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.
Näsazlyklary düzeltmek
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>
Netije
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.