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

В предната част видяхме колко е лесно да изтеглим готов проект от интернет. Но истинската сила на Docker се крие в това да вземете вашия собствен код и да го превърнете в стандартен образ, който работи навсякъде.
За целта ще използваме един специален текстов файл, наречен Dockerfile.
1. Какво е Dockerfile? (Простата логика) 📝
Ако Docker Image е "инсталационният диск", то Dockerfile е списъкът с инструкции как да се запише този диск. Това е обикновен текстов файл, в който описвате стъпка по стъпка:
- Каква операционна система да ползваме за основа?
- Какви допълнителни програми да инсталираме?
- Кои файлове от нашия компютър да копираме вътре?
- Коя команда да се изпълни при стартиране?
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 (За да ви се получи от раз) ✨
За да не се чудите защо образът ви е огромен или защо не тръгва, следвайте тези съвети:
- Използвайте леки основи (Slim/Alpine): Вместо
FROM ubuntu(което е 200MB), ползвайтеFROM alpine(само 5MB), ако е възможно. - Редът има значение: Docker кешира всяка стъпка. Слагайте нещата, които се променят рядко (като инсталация на библиотеки), най-отгоре.
- Един контейнер = Една задача: Не се опитвайте да сложите база данни, уеб сървър и имейл сървър в един Dockerfile. За това ползваме Docker Compose (както научихме в Част 1).
Какво следва?
В следващата статия (Част 3) ще разгледаме една от най-важните теми: Данните (Volumes). Ще разберем как да направим така, че информацията в нашата база данни да не изчезва, когато спрем контейнера, и как да редактираме код в реално време, без да преизграждаме образа постоянно.
Намерихте материала за полезен?
Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума.
Всяко дарение помага за поддръжката и развитието на портала.
