---
title: 'Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem | Zomro'
description: 'Izpratne par Dockerfile un spēja to pareizi izmantot — tas ir pamats efektīvai Docker izmantošanai.'
image: 'https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/dalle-2024-07-08-210308-a-minimalist-rectangular-widescreen-infographic-in-pink-and-purple-colors-themed-around-dockerfile_-complete-guide-for-beginners-and-professionals_q50.jpg'
---

![opened image]()

  * [Zomro](https://zomro.com/lv/)
  * [FAQ](https://zomro.com/lv/blog/faq/)
  * Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem 



# Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem

08-07-2024

![Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem - 1](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/dalle-2024-07-08-210308-a-minimalist-rectangular-widescreen-infographic-in-pink-and-purple-colors-themed-around-dockerfile_-complete-guide-for-beginners-and-professionals_q50.jpg)

**Docker** — tas ir jaudīgs rīks konteineru izveidei, izvietošanai un pārvaldībai, kas kļuvis par de facto standartu programmatūras izstrādes nozarē. Viens no galvenajiem **Docker** elementiem ir **Dockerfile** — teksta fails, kas satur instrukcijas **Docker** attēla izveidei. Izpratne par Dockerfile un spēja to pareizi izmantot — tas ir pamats efektīvai **Docker** izmantošanai.

**Kas ir Dockerfile?**  


**Dockerfile** — tas ir skripts, kas satur komandu un instrukciju kopumu **Docker-attēla** izveidei. **Docker-attēls** , savukārt, ir nemainīgs paraugs, kas ietver visu nepieciešamo konteineru palaišanai: operētājsistēmu, bibliotēkas, atkarības un pašu lietojumprogrammu.

**Galvenās Dockerfile instrukcijas**  


Vispirms aplūkosim galvenās instrukcijas, kas tiek izmantotas **Dockerfile** :

**FROM:** Šī instrukcija nosaka bāzes attēlu, uz kura tiks veidots jauns attēls. Piemēram, **FROM ubuntu:20.04** norāda, ka bāzes attēls būs **Ubuntu 20.04**.

**RUN:** Tiek izmantots, lai izpildītu komandas konteinerā. Parasti tiek izmantots pakotņu instalēšanai un citu operāciju veikšanai, kas nepieciešamas vides sagatavošanai.

**CMD:** Nosaka komandu, kas tiks izpildīta, palaižot konteineru. Atšķirībā no **RUN** , šī komanda netiek izpildīta attēla izveides laikā, bet tikai konteineru palaišanas laikā.

**ENTRYPOINT:** Ļauj norādīt komandu, kas vienmēr tiks izpildīta, palaižot konteineru. To var pārrakstīt, palaižot konteineru ar komandrindas parametriem.

**COPY un ADD** : Šīs instrukcijas tiek izmantotas, lai kopētu failus un direktorijas no lokālās failu sistēmas uz attēla failu sistēmu. **COPY** veic vienkāršu kopēšanu, bet **ADD** var papildus izpakot failus un lejupielādēt tos pa **URL**.

**ENV:** Iestata vides mainīgos konteinerā.

**EXPOSE:** Norāda, kuri porti tiks atvērti konteinerā ārējai piekļuvei.

**VOLUME:** Izveido montēšanas punktu darbam ar pastāvīgu krātuvi.

**WORKDIR:** Nosaka darba direktoriju visām turpmākajām instrukcijām.

**Dockerfile piemērs**

Aplūkosim vienkāršu **Dockerfile** piemēru **Node.js** lietojumprogrammai:
    
    
    # Norādām bāzes attēlu
    FROM node:14
    
    # Iestata darba direktoriju
    WORKDIR /app
    
    # Kopējam package.json un package-lock.json
    COPY package*.json ./
    
    # Iestata atkarības
    RUN npm install
    
    # Kopējam lietojumprogrammas avota kodu
    COPY . .
    
    # Norādām portu
    EXPOSE 3000
    
    # Nosakām komandu lietojumprogrammas palaišanai
    CMD ["npm", "start"]
    

![Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem - 2](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/01_frpnJ5V_q50.jpg)

  
**Detalizēta Dockerfile analīze:**

**​​​​​​​**

**FROM node:14** — Norāda, ka bāzes attēls būs oficiālais **Node.js** attēls versijā **14**. Tas nozīmē, ka mūsu attēlā tiks iekļautas visas nepieciešamās **Node.js** atkarības.

**WORKDIR /app** — Iestata darba direktoriju**/app,** kur tiks kopēti faili un izpildītas komandas.

**COPY package.json ./*** — Kopē failus **package.json** un **package-lock.json** darba direktorijā konteinerā. Šie faili satur informāciju par lietojumprogrammas atkarībām.

**RUN npm install** — Veic atkarību instalēšanu, kas norādītas package.json.

**COPY . .** — Kopē visus failus un mapes no pašreizējās direktorijas (kur atrodas **Dockerfile**) darba direktorijā konteinerā.

**EXPOSE 3000** — Norāda, ka konteineram būs jāuzklausa ports **3000**.

**CMD ["node", "app.js"]** — Nosaka komandu lietojumprogrammas palaišanai. Šajā gadījumā tas ir faila **app.js** palaišana, izmantojot **Node.js**.

  


Izveidojiet failu **app.js** ar sekojošo saturu, vai izmantojiet savu:  
  
  

    
    
    // 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}`);
    });

  
Izveidojiet failu **package.json** ar sekojošo saturu:
    
    
    {
      "name": "my-node-app",
      "version": "1.0.0",
      "description": "Vienkārša Node.js lietojumprogramma ar Express",
      "main": "app.js",
      "scripts": {
        "start": "node app.js"
      },
      "dependencies": {
        "express": "^4.17.1"
      }
    }

![Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem - 3](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/011_q50.jpg)

**Dockerfile izmantošana**

Tagad, kad esam izpētījuši galvenās instrukcijas un aplūkojuši **Dockerfile** piemēru, pāriesim pie praktiskās izmantošanas. Lai izveidotu **Docker** attēlu un palaistu konteineru, nepieciešams izpildīt dažas komandas terminālī.

Pārliecinieties, ka faili **app.js** , **package.json** un **Dockerfile** atrodas vienā direktorijā. Pēc tam izveidojiet attēlu.

**Attēla izveide:**
    
    
    docker build -t my-node-app .

Šeit**-t my-node-app** nosaka attēla nosaukumu, bet**.** norāda, ka **Dockerfile** atrodas pašreizējā direktorijā.

![Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem - 4](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/02_VwK1Dib_q50.jpg)

**Konteinera palaišana:**
    
    
    docker run -p 3000:3000 my-node-app

Komanda **docker run** palaiž konteineru, pamatojoties uz izveidoto attēlu. Parametrs **-p 3000:3000** norāda, ka ports **3000** uz viesmašīnas tiks novirzīts uz portu **3000** konteinerā. Jūsu serverim vajadzētu veiksmīgi palaist, un jūs varēsiet piekļūt tam, atverot pārlūkā **http://localhost:3000**. Kur redzēsiet vienkāršu sveicienu**"Hello, World!"**.

![Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem - 5](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/03_CRPsR7Y_q50.jpg)

![Dockerfile: Pilnīgs ceļvedis iesācējiem un profesionāļiem - 6](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/04_kxzdzml_q50.jpg)​​​​​​​

**Secinājums**

**Dockerfile** — tas ir jaudīgs rīks, lai automatizētu un standartizētu **Docker-attēlu** izveides procesu. Izpratne par galvenajām instrukcijām un principiem darbā ar **Dockerfile** ļauj izstrādātājiem efektīvi pārvaldīt vides un izvietot lietojumprogrammas konteineros. Ir svarīgi atcerēties, ka **Dockerfile** jābūt optimizētam un jāietver tikai nepieciešamās komandas, lai samazinātu attēla izmēru un uzlabotu konteineru veiktspēju.

Līdzīgie raksti

[Kā apskatīt shutdown un restart žurnālus Windows Server](https://zomro.com/lv/blog/faq/258-kak-posmotret-logi-shutdown-i-restart-v-windows-server) [Kā konfigurēt un optimizēt MySQL serveri VPS.](https://zomro.com/lv/blog/faq/544-how-to-configure-and-optimize-mysql-server-on-vps) [Kā instalēt savu MT terminālu uz FXTrade kontu?](https://zomro.com/lv/blog/faq/184-kak-ustanovit-svoj-terminal-mt-na-fxtrade-akkaunt) [Veco žurnālu un pagaidu failu tīrīšana Linux serveros](https://zomro.com/lv/blog/faq/371-cleaning-up-old-logs-and-temporary-files-on-linux-servers) [Kā uzstādīt SOCKS5 Dockerī](https://zomro.com/lv/blog/faq/282-kak-ustanovit-socks5-v-docker)

[ Premium Cloud VPS no €7.95/mēn. ](/lv/vps)
