Продолжаем разбираться в инфраструктуре, чтобы облегчить возможность работы с сервисами и спокойно двигаться к Airflow/dbt/витринам, нам нужен быстрый и предсказуемый способ поднимать окружение.
Вот тут нам и понадобится Docker‼️
Как всегда, начнем знакомство с небольшой теории, затем перейдем к практике.
Docker - это платформа, которая позволяет упаковать в контейнер приложение со всем окружением и зависимостями, а затем доставить и запустить его в целевой системе.
🏗Из чего состоит Docker?
➡️ Dockerfile - текстовый файл с инструкциями для сборки образа:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
➡️ Image (Образ) - неизменяемый шаблон со всеми зависимостями. Состоит из слоев, которые кэшируются для ускорения сборки.
➡️ Container (Контейнер) - запущенный экземпляр образа: изолирован, общается через порты и тома.
➡️ Registry - хранилище образов (Docker Hub, GitLab Container Registry).
➡️ Volumes - персистентное хранение данных (не пропадут при пересборках).
➡️ Networks/ports - изоляция и связь между контейнерами:
➡️ docker-compose - большая инструкция для всего сетапа сразу (разберем подробно в отдельном посте).
Как это работает?
1️⃣Находим образ в Registry (Docker Hub).
2️⃣Тянем образ: docker pull postgres:16 (или Docker подтянет его сам при первом запуске).
3️⃣ Запускаем контейнер из образа: указываем переменные окружения, порты и тома.
docker run -d --name pg \
-e POSTGRES_PASSWORD=secret \
-p 5432:5432 \
-v pgdata:/var/lib/postgresql/data \
postgres:16
4️⃣Смотрим запущенные контейнеры: docker ps
5️⃣Взаимодействуем: логи docker logs -f pg, зайти внутрь контейнера docker exec -it pg bash
🔍 Зачем это нам⁉️
➖Повторяемость: «работает у меня» превращаем в «работает у всех».
➖Изоляция: каждый сервис в своей песочнице - никаких сложностей из-за разных версий.
➖Скорость: одна команда - и у тебя запущенное приложение
➖Портативность: ноут, сервер, облако - легко запустить.
😩Что смотреть, чтобы разобраться?
1️⃣ Целый видео-курс с теорией и практикой
2️⃣Хорошая статья на хабре про то как работает докер
⁉️ Дальше по плану
❔шпаргалка команд для Docker;
❔что за зверь docker-compose и почему он удобнее ручного запуска;
❔поднимем Airflow и запустим первые DAG-и.
@etl_kitchen