Как се пише Dockerfile: Ръководство за изграждане на собствени образи

Как се пише Dockerfile: Ръководство за изграждане на собствени образи

В предната част видяхме колко е лесно да изтеглим готов проект от интернет. Но истинската сила на Docker се крие в това да вземете вашия собствен код и да го превърнете в стандартен образ, който работи навсякъде.

За целта ще използваме един специален текстов файл, наречен Dockerfile.


1. Какво е Dockerfile? (Простата логика) 📝

Ако Docker Image е "инсталационният диск", то Dockerfile е списъкът с инструкции как да се запише този диск. Това е обикновен текстов файл, в който описвате стъпка по стъпка:

  1. Каква операционна система да ползваме за основа?
  2. Какви допълнителни програми да инсталираме?
  3. Кои файлове от нашия компютър да копираме вътре?
  4. Коя команда да се изпълни при стартиране?

2. Анатомия на един Dockerfile (Основни команди) 🏗️

Преди да преминем към практиката, нека научим "езика" на Docker. В един Dockerfile най-често ще виждате тези 5 команди:

  • FROM: Винаги започваме от тук. Казваме на Docker коя е основата (напр. FROM python:3.9 или FROM ubuntu:22.04).
  • WORKDIR: Определяме в коя папка "вътре" в контейнера ще работим.
  • COPY: Прехвърляме файлове от нашия сървър/компютър в контейнера.
  • RUN: Изпълняваме команди по време на изграждането (например инсталиране на библиотеки с apt-get install).
  • CMD: Казваме на контейнера какво да направи, веднага щом се събуди (например да стартира вашия скрипт).

3. Практика: Пакетиране на първото ни приложение 🚀

Нека направим нещо истинско. Ще създадем малко приложение на Python, което показва съобщение, и ще го "докеризираме".

Стъпка 1: Подготовка на файловете

Влезте в сървъра си и създайте нова папка:

mkdir moqt-proekt && cd moqt-proekt

Създайте прост Python файл: nano app.py В него напишете:

print("Здравей! Този скрипт работи вътре в Docker контейнер!")

Стъпка 2: Писане на Dockerfile

Сега създаваме "рецептата": nano Dockerfile Поставете следното съдържание:

# 1. Вземи готов лек образ с Python
FROM python:3.9-slim

# 2. Направи папка /app вътре в контейнера
WORKDIR /app

# 3. Копирай нашия скрипт в тази папка
COPY app.py .

# 4. Кажи на Docker да стартира скрипта
CMD ["python", "app.py"]

4. Изграждане на образа (The Build Process) 🔨

Сега трябва да превърнем инструкциите в истински Image. Използваме командата docker build.

docker build -t moqt-python-image .

Какво означават тези букви?

  • -t moqt-python-image: Даваме име (Tag) на нашия образ.
  • . (точката накрая): Казваме на Docker: "Търси Dockerfile в текущата папка".

След като командата приключи, напишете docker images. Ще видите вашия нов образ в списъка!


5. Стартиране: Да видим резултата 🎬

Сега стартираме нашия собствен образ:

docker run moqt-python-image

Ако видите съобщението "Здравей! Този скрипт работи вътре в Docker контейнер!", значи току-що създадохте първия си софтуерен пакет!


6. Златни правила за "чист" Dockerfile (За да ви се получи от раз) ✨

За да не се чудите защо образът ви е огромен или защо не тръгва, следвайте тези съвети:

  1. Използвайте леки основи (Slim/Alpine): Вместо FROM ubuntu (което е 200MB), ползвайте FROM alpine (само 5MB), ако е възможно.
  2. Редът има значение: Docker кешира всяка стъпка. Слагайте нещата, които се променят рядко (като инсталация на библиотеки), най-отгоре.
  3. Един контейнер = Една задача: Не се опитвайте да сложите база данни, уеб сървър и имейл сървър в един Dockerfile. За това ползваме Docker Compose (както научихме в Част 1).

Какво следва?

В следващата статия (Част 3) ще разгледаме една от най-важните теми: Данните (Volumes). Ще разберем как да направим така, че информацията в нашата база данни да не изчезва, когато спрем контейнера, и как да редактираме код в реално време, без да преизграждаме образа постоянно.

open source spirit
🛠️
$

Намерихте материала за полезен?

Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума. Всяко дарение помага за поддръжката и развитието на портала.

PayPal Revolut

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *


Колко е 10 - 10 ? (въведете числото)