opened image

Dockerfile: Бастапқы және кәсіби мамандарға арналған толық нұсқаулық

​​​​​​​

 

 

Docker — бұл контейнерлерді жасау, орналастыру және басқару үшін қуатты құрал, ол бағдарламалық қамтамасыз ету әзірлеу индустриясында де-факто стандартқа айналды. Docker-тің негізгі элементтерінің бірі Dockerfile — бұл Docker бейнесін жасау үшін нұсқауларды қамтитын мәтіндік файл. Dockerfile-ды түсіну және оны дұрыс пайдалану Docker-ті тиімді пайдаланудың негізі болып табылады.

 

Dockerfile дегеніміз не?
 

Dockerfile — бұл Docker-образын жасау үшін командалар мен нұсқаулар жиынтығын қамтитын сценарий. Docker-образ — бұл контейнерді іске қосу үшін қажетті барлық нәрсені қамтитын өзгермейтін шаблон: операциялық жүйе, кітапханалар, тәуелділіктер және өзі қосымша.

 

 

Dockerfile-дың негізгі нұсқаулары
 

 

Алдымен Dockerfile-да қолданылатын негізгі нұсқауларды қарастырайық:

 

FROM: Бұл нұсқау жаңа образ жасалатын базалық образды анықтайды. Мысалы, FROM ubuntu:20.04 базалық образ Ubuntu 20.04 болатынын көрсетеді.

RUN: Контейнерде командаларды орындау үшін қолданылады. Әдетте, пакеттерді орнату және орта дайындау үшін қажетті басқа операцияларды орындау үшін пайдаланылады.

CMD: Контейнер іске қосылғанда орындалатын команданы анықтайды. RUN-нан айырмашылығы, бұл команда образды жинау кезінде орындалмайды, тек контейнер іске қосылғанда орындалады.

ENTRYPOINT: Контейнер іске қосылғанда әрқашан орындалатын команданы анықтауға мүмкіндік береді. Контейнерді командалық жол параметрлері арқылы іске қосу кезінде қайта анықталуы мүмкін.

COPY және ADD: Бұл нұсқаулар файлдар мен каталогтарды локалдық файлдық жүйеден образ файлдық жүйесіне көшіру үшін қолданылады. COPY жай көшіруді орындайды, ал ADD файлдарды қосымша түрде архивтен шығарып, URL бойынша жүктей алады.

ENV: Контейнер ішінде орта айнымалыларын орнатады.

EXPOSE: Контейнерде сыртқы қолжетімділік үшін ашылатын порттарды көрсетеді.

VOLUME: Тұрақты сақтау үшін жұмыс істейтін монтаждау нүктесін жасайды.

WORKDIR: Барлық келесі нұсқаулар үшін жұмыс директориясын орнатады.

 

 

Dockerfile мысалы

 

Node.js қосымшасы үшін қарапайым Dockerfile мысалын қарастырайық:

 

# Базалық образды көрсетеміз
FROM node:14

# Жұмыс директориясын орнатамыз
WORKDIR /app

# package.json және package-lock.json файлдарын көшіреміз
COPY package*.json ./

# Тәуелділіктерді орнатамыз
RUN npm install

# Қосымшаның бастапқы кодын көшіреміз
COPY . .

# Портты көрсетеміз
EXPOSE 3000

# Қосымшаны іске қосу үшін команданы анықтаймыз
CMD ["npm", "start"]

 

 

 


Dockerfile-ды егжей-тегжейлі талдау:

​​​​​​​

FROM node:14 — базалық образ ресми Node.js бейнесі 14 нұсқасы болатынын көрсетеді. Бұл біздің образымызда Node.js жұмыс істеу үшін қажетті барлық тәуелділіктер болады дегенді білдіреді.

WORKDIR /app — жұмыс директориясын /app орнатады, мұнда файлдар көшіріледі және командалар орындалады.

COPY package.json ./* package.json және package-lock.json файлдарын контейнердің жұмыс директориясына көшіреді. Бұл файлдар қосымшаның тәуелділіктері туралы ақпаратты қамтиды.

RUN npm install — package.json-да көрсетілген тәуелділіктерді орнатады.

COPY . . — ағымдағы директориядан (мұнда Dockerfile орналасқан) контейнердің жұмыс директориясына барлық файлдар мен папкаларды көшіреді.

EXPOSE 3000 — контейнер 3000 портын тыңдайтынын көрсетеді.

CMD ["node", "app.js"] — қосымшаны іске қосу үшін команданы анықтайды. Бұл жағдайда app.js файлын Node.js арқылы іске қосу.


 

Келесі мазмұнмен app.js файлын жасаңыз немесе өз файлыңызды пайдаланыңыз:


 

// app.js

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

app.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});

 


package.json файлын келесі мазмұнмен жасаңыз:

 

{
  "name": "my-node-app",
  "version": "1.0.0",
  "description": "Express-пен қарапайым Node.js қосымшасы",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}

 

 

 

Dockerfile-ды пайдалану

 

Енді біз негізгі нұсқауларды қарастырдық және Dockerfile мысалын талдадық, практикалық қолдануға көшейік. Docker образын жасау және контейнерді іске қосу үшін терминалда бірнеше командаларды орындау қажет.

 

Образды жасау:

 

docker build -t my-node-app .

 

Мұнда -t my-node-app образдың атын белгілейді, ал . Dockerfile ағымдағы директорияда орналасқанын көрсетеді.

 

 

Контейнерді іске қосу:

 

docker run -p 3000:3000 my-node-app

 

docker run командасы жасалған образ негізінде контейнерді іске қосады. -p 3000:3000 параметрі хост-машинадағы 3000 портын контейнердегі 3000 портына бағыттайтынын көрсетеді. Сіздің серверіңіз сәтті іске қосылуы керек, және сіз браузерде http://localhost:3000 ашып, "Hello, World!" деген қарапайым сәлемдесуді көре аласыз.

 

 

 

​​​​​​​

 

Қорытынды

 

Dockerfile — бұл Docker-образдарын жасау процесін автоматтандыру және стандарттау үшін қуатты құрал. Негізгі нұсқаулар мен Dockerfile жұмыс принциптерін түсіну әзірлеушілерге орта мен контейнерлерде қосымшаларды орналастыруды тиімді басқаруға мүмкіндік береді. Dockerfile оптимизацияланған және образдың көлемін азайту және контейнерлердің өнімділігін арттыру үшін тек қажетті командаларды қамтуы маңызды екенін есте ұстау керек.