---
title: 'Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów | Zomro'
description: 'Zrozumienie Dockerfile i umiejętność jego prawidłowego użycia — to podstawa efektywnego korzystania z Docker.'
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/pl/)
  * [FAQ](https://zomro.com/pl/blog/faq/)
  * Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów 



# Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów

08-07-2024

![Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów - 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** — to potężne narzędzie do tworzenia, wdrażania i zarządzania kontenerami, które stało się de facto standardem w branży rozwoju oprogramowania. Jednym z kluczowych elementów **Docker** jest **Dockerfile** — plik tekstowy zawierający instrukcje do tworzenia obrazu **Docker**. Zrozumienie Dockerfile i umiejętność jego prawidłowego użycia — to podstawa efektywnego korzystania z **Docker**.

**Co to jest Dockerfile?**  


**Dockerfile** — to skrypt, który zawiera zestaw poleceń i instrukcji do tworzenia **obrazu Docker**. **Obraz Docker** , z kolei, jest niezmiennym szablonem, który zawiera wszystko, co potrzebne do uruchomienia kontenera: system operacyjny, biblioteki, zależności i samo aplikację.

**Podstawowe instrukcje Dockerfile**  


Na początek przyjrzyjmy się podstawowym instrukcjom, które są używane w **Dockerfile** :

**FROM:** Ta instrukcja określa bazowy obraz, na podstawie którego będzie tworzony nowy obraz. Na przykład, **FROM ubuntu:20.04** wskazuje, że bazowym obrazem będzie **Ubuntu 20.04**.

**RUN:** Używana do wykonywania poleceń w kontenerze. Zwykle używana do instalacji pakietów i wykonywania innych operacji niezbędnych do przygotowania środowiska.

**CMD:** Określa polecenie, które zostanie wykonane przy uruchomieniu kontenera. W przeciwieństwie do **RUN** , to polecenie nie jest wykonywane podczas budowy obrazu, a tylko przy uruchomieniu kontenera.

**ENTRYPOINT:** Pozwala określić polecenie, które zawsze będzie wykonywane przy uruchomieniu kontenera. Może być nadpisane podczas uruchamiania kontenera za pomocą parametrów wiersza poleceń.

**COPY i ADD** : Te instrukcje są używane do kopiowania plików i katalogów z lokalnego systemu plików do systemu plików obrazu. **COPY** wykonuje proste kopiowanie, a **ADD** może dodatkowo rozpakować pliki i pobierać je z **URL**.

**ENV:** Ustawia zmienne środowiskowe wewnątrz kontenera.

**EXPOSE:** Wskazuje, które porty będą otwarte w kontenerze dla zewnętrznego dostępu.

**VOLUME:** Tworzy punkt montowania do pracy z trwałym magazynem.

**WORKDIR:** Ustawia katalog roboczy dla wszystkich kolejnych instrukcji.

**Przykład Dockerfile**

Rozważmy prosty przykład **Dockerfile** dla aplikacji **Node.js** :
    
    
    # Ustawiamy bazowy obraz
    FROM node:14
    
    # Ustawiamy katalog roboczy
    WORKDIR /app
    
    # Kopiujemy package.json i package-lock.json
    COPY package*.json ./
    
    # Instalujemy zależności
    RUN npm install
    
    # Kopiujemy kod źródłowy aplikacji
    COPY . .
    
    # Ustawiamy port
    EXPOSE 3000
    
    # Określamy polecenie do uruchomienia aplikacji
    CMD ["npm", "start"]
    

![Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów - 2](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/01_frpnJ5V_q50.jpg)

  
**Szczegółowa analiza Dockerfile:**

**​​​​​​​**

**FROM node:14** — Wskazuje, że bazowym obrazem będzie oficjalny obraz **Node.js** w wersji **14**. Oznacza to, że do naszego obrazu zostaną dołączone wszystkie niezbędne zależności do działania **Node.js**.

**WORKDIR /app** — Ustawia katalog roboczy**/app,** do którego będą kopiowane pliki i wykonywane polecenia.

**COPY package.json ./*** — Kopiuje pliki **package.json** i **package-lock.json** do katalogu roboczego kontenera. Pliki te zawierają informacje o zależnościach aplikacji.

**RUN npm install** — Wykonuje instalację zależności określonych w package.json.

**COPY . .** — Kopiuje wszystkie pliki i foldery z bieżącego katalogu (gdzie znajduje się **Dockerfile**) do katalogu roboczego kontenera.

**EXPOSE 3000** — Wskazuje, że kontener będzie nasłuchiwał na porcie **3000**.

**CMD ["node", "app.js"]** — Określa polecenie do uruchomienia aplikacji. W tym przypadku jest to uruchomienie pliku **app.js** za pomocą **Node.js**.

  


Utwórz plik **app.js** z następującą zawartością, lub użyj własnego:  
  
  

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

  
Utwórz plik **package.json** z następującą zawartością:
    
    
    {
      "name": "my-node-app",
      "version": "1.0.0",
      "description": "A simple Node.js app with Express",
      "main": "app.js",
      "scripts": {
        "start": "node app.js"
      },
      "dependencies": {
        "express": "^4.17.1"
      }
    }

![Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów - 3](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/011_q50.jpg)

**Użycie Dockerfile**

Teraz, gdy omówiliśmy podstawowe instrukcje i przyjrzeliśmy się przykładowi **Dockerfile** , przejdźmy do praktycznego użycia. Aby stworzyć obraz **Docker** i uruchomić kontener, należy wykonać kilka poleceń w terminalu.

Upewnij się, że pliki **app.js** , **package.json** i **Dockerfile** znajdują się w tym samym katalogu. Następnie stwórz obraz.

**Tworzenie obrazu:**
    
    
    docker build -t my-node-app .

Tutaj**-t my-node-app** ustawia nazwę obrazu, a**.** wskazuje, że **Dockerfile** znajduje się w bieżącym katalogu.

![Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów - 4](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/02_VwK1Dib_q50.jpg)

**Uruchamianie kontenera:**
    
    
    docker run -p 3000:3000 my-node-app

Polecenie **docker run** uruchamia kontener na podstawie stworzonego obrazu. Parametr **-p 3000:3000** wskazuje, że port **3000** na maszynie hosta będzie przekierowany na port **3000** w kontenerze. Twój serwer powinien się pomyślnie uruchomić, a Ty będziesz mógł uzyskać do niego dostęp, otwierając w przeglądarce **http://localhost:3000**. Gdzie zobaczysz banalne powitanie**"Hello, World!"**.

![Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów - 5](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/03_CRPsR7Y_q50.jpg)

![Dockerfile: Pełny przewodnik dla początkujących i profesjonalistów - 6](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/04_kxzdzml_q50.jpg)​​​​​​​

**Podsumowanie**

**Dockerfile** — to potężne narzędzie do automatyzacji i standaryzacji procesu tworzenia **obrazów Docker**. Zrozumienie podstawowych instrukcji i zasad pracy z **Dockerfile** pozwala programistom efektywnie zarządzać środowiskami i wdrażać aplikacje w kontenerach. Ważne jest, aby pamiętać, że **Dockerfile** powinien być zoptymalizowany i zawierać tylko niezbędne polecenia, aby zminimalizować rozmiar obrazu i zwiększyć wydajność kontenerów.

Similar articles:

[Jak wyświetlić dzienniki połączeń RDP w systemie Windows Server 2016, 2019](https://zomro.com/pl/blog/faq/277-how-to-view-rdp-connection-logs-in-windows-2016-2019) [Instalacja serwera terminali w Windows Server 2012, 2016, 2019](https://zomro.com/pl/blog/faq/267-ustanovka-servera-terminalov-v-windows-server-2012-2016-2019) [Jak zainstalować Kali Linux na serwerze wirtualnym (VPS/VDS)](https://zomro.com/pl/blog/faq/262-kak-ustanovit-kali-linux-na-virtualnyj-server-vps-vds) [Dostęp przez FTP do folderu strony na serwerze z panelem Hestia](https://zomro.com/pl/blog/faq/224-dostup-po-ftp-k-papke-sajta-na-servere-s-panelju-hestia) [Jądra serwerów Minecraft Java](https://zomro.com/pl/blog/faq/332-minecraft-java-server-cores)

[ Premium Cloud VPS od €7.95/mies ](/pl/premium-vps)
