Улучшение документации - подчистили старые задачи

This commit is contained in:
2026-01-09 18:04:29 +03:00
parent db0e0259d6
commit 16da5d0aae
4 changed files with 30 additions and 9 deletions
+8 -3
View File
@@ -5,15 +5,20 @@ LABEL maintainer="your-email@example.com"
LABEL description="Airflow with Greenplum and Pandas dependencies" LABEL description="Airflow with Greenplum and Pandas dependencies"
LABEL version="1.0" LABEL version="1.0"
# Устанавливаем psql для ручной диагностики внутри контейнера
USER root
RUN apt-get update \
&& apt-get install -y --no-install-recommends postgresql-client \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Копируем requirements в стандартное расположение # Копируем requirements в стандартное расположение
COPY airflow/requirements.txt /opt/airflow/requirements.txt COPY airflow/requirements.txt /opt/airflow/requirements.txt
# Устанавливаем зависимости # Устанавливаем зависимости
USER airflow
RUN pip install --no-cache-dir -r /opt/airflow/requirements.txt \ RUN pip install --no-cache-dir -r /opt/airflow/requirements.txt \
&& pip check \ && pip check \
&& rm -rf /tmp/pip-* && rm -rf /tmp/pip-*
# Переключаемся на пользователя airflow
USER airflow
WORKDIR /opt/airflow WORKDIR /opt/airflow
+13
View File
@@ -174,6 +174,19 @@ Healthcheck сервиса `greenplum` учитывает не только го
--- ---
### Airflow: свой образ
Airflow тоже собирается из собственного `Dockerfile.airflow`, чтобы зависимости ставились при сборке, а не во время старта контейнеров. В образ включены:
- Python‑зависимости из `airflow/requirements.txt`;
- утилита `psql` для быстрых проверок внутри контейнера.
Если меняли `airflow/requirements.txt` или `Dockerfile.airflow`, пересоберите образы: `make build`, затем `make up`.
В docker-compose по умолчанию задан `AIRFLOW__CORE__EXECUTOR=LocalExecutor` (параллельное выполнение задач). Если нужен последовательный режим — замените на `SequentialExecutor` в `docker-compose.yml`.
---
### Локальное окружение разработчика ### Локальное окружение разработчика
Локальным окружением управляет [uv](https://docs.astral.sh/uv/) — он скачивает нужный Python и создаёт `.venv` на основе `pyproject.toml` / `uv.lock`. Локальным окружением управляет [uv](https://docs.astral.sh/uv/) — он скачивает нужный Python и создаёт `.venv` на основе `pyproject.toml` / `uv.lock`.
+1
View File
@@ -20,6 +20,7 @@
- `cp .env.example .env` (если файла ещё нет) и проверьте переменные: - `cp .env.example .env` (если файла ещё нет) и проверьте переменные:
- `GP_PORT` — внутренний порт Greenplum в Docker-сети (по умолчанию 5432, менять не нужно); внешний порт для подключения с хоста фиксирован на `5435`, поэтому локальный PostgreSQL на 5432 не помешает. - `GP_PORT` — внутренний порт Greenplum в Docker-сети (по умолчанию 5432, менять не нужно); внешний порт для подключения с хоста фиксирован на `5435`, поэтому локальный PostgreSQL на 5432 не помешает.
- `GP_USE_AIRFLOW_CONN=true` при желании использовать Airflow Connection; `false` — fallback на ENV. - `GP_USE_AIRFLOW_CONN=true` при желании использовать Airflow Connection; `false` — fallback на ENV.
- Если меняли `airflow/requirements.txt` или `Dockerfile.airflow`, выполните `make build` перед `make up`.
- `make up` — поднимаем все сервисы. Важно дождаться статуса `healthy` у `pgmeta` и `greenplum` (`docker compose ps`); `greenplum` считается `healthy` только когда поднят и Greenplum, и PXF. - `make up` — поднимаем все сервисы. Важно дождаться статуса `healthy` у `pgmeta` и `greenplum` (`docker compose ps`); `greenplum` считается `healthy` только когда поднят и Greenplum, и PXF.
- `make logs` — следим, пока webserver и scheduler не перейдут в рабочее состояние (`Listening at: http://0.0.0.0:8080`). - `make logs` — следим, пока webserver и scheduler не перейдут в рабочее состояние (`Listening at: http://0.0.0.0:8080`).
+8 -6
View File
@@ -3,14 +3,16 @@
Этот файл собирает идеи по доработке стенда, которые не критичны для текущих задач менти, Этот файл собирает идеи по доработке стенда, которые не критичны для текущих задач менти,
но улучшат стабильность и удобство сопровождения. но улучшат стабильность и удобство сопровождения.
- Собрать свой образ Airflow поверх `apache/airflow:2.9.2`: Статус: все пункты ниже выполнены и отражены в README/TESTING.
- [x] Собрать свой образ Airflow поверх `apache/airflow:2.9.2`:
- вынести установку Python‑зависимостей из runtime (`pip install ...` при старте контейнеров) - вынести установку Python‑зависимостей из runtime (`pip install ...` при старте контейнеров)
в отдельный `Dockerfile`; в отдельный `Dockerfile`;
- переключить `docker-compose.yml` на использование этого образа для `airflow-webserver`, - переключить `docker-compose.yml` на использование этого образа для `airflow-webserver`,
`airflow-scheduler` и `airflow-init`; `airflow-scheduler` и `airflow-init`;
- обновить документацию (README/TESTING) под новую схему сборки. - обновить документацию (README/TESTING) под новую схему сборки.
- Переключить Airflow с `SequentialExecutor` (SequentialScheduler) на `LocalExecutor` - [x] Переключить Airflow с `SequentialExecutor` (SequentialScheduler) на `LocalExecutor`
для docker‑стенда: для docker‑стенда:
- проверить, какие параметры достаточно поменять в env/конфиге (`AIRFLOW__CORE__EXECUTOR`) - проверить, какие параметры достаточно поменять в env/конфиге (`AIRFLOW__CORE__EXECUTOR`)
для образа `apache/airflow:2.9.2`; для образа `apache/airflow:2.9.2`;
@@ -18,7 +20,7 @@
предсказуемо в режиме параллельного исполнения; предсказуемо в режиме параллельного исполнения;
- при необходимости скорректировать тесты и документацию (README/TESTING) с учётом нового executor’а. - при необходимости скорректировать тесты и документацию (README/TESTING) с учётом нового executor’а.
- Разобрать и стабилизировать интеграцию с Greenplum/PXF: - [x] Разобрать и стабилизировать интеграцию с Greenplum/PXF:
- убедиться, что PXF в контейнере `greenplum` всегда корректно инициализируется - убедиться, что PXF в контейнере `greenplum` всегда корректно инициализируется
(нет ошибок вида `protocol "pxf" does not exist` при первом запуске `make ddl-gp`); (нет ошибок вида `protocol "pxf" does not exist` при первом запуске `make ddl-gp`);
- при необходимости доработать init‑скрипты в `pxf/init/` и/или документацию, - при необходимости доработать init‑скрипты в `pxf/init/` и/или документацию,
@@ -26,16 +28,16 @@
- добавить краткий раздел в README/TESTING о типичных ошибках PXF/Greenplum и шагах по их устранению. - добавить краткий раздел в README/TESTING о типичных ошибках PXF/Greenplum и шагах по их устранению.
- диагностика текущего кейса: `docs/internal/pxf_bookings.md` (раздел «Известная проблема»). - диагностика текущего кейса: `docs/internal/pxf_bookings.md` (раздел «Известная проблема»).
- Разобраться с генератором demodb: - [x] Разобраться с генератором demodb:
- после `make bookings-init` таблица `bookings.bookings` остаётся пустой; - после `make bookings-init` таблица `bookings.bookings` остаётся пустой;
- патчи `bookings/patches/engine_jobs1_sync.patch` и `bookings/patches/install_drop_if_exists.patch` - патчи `bookings/patches/engine_jobs1_sync.patch` и `bookings/patches/install_drop_if_exists.patch`
падают при применении (hunk failed / garbage in patch); падают при применении (hunk failed / garbage in patch);
- из‑за этого DAG `bookings_to_gp_stage` валится на проверках (источник пустой). - из‑за этого DAG `bookings_to_gp_stage` валится на проверках (источник пустой).
- план: `plans/bookings-demodb-bugfix-plan.md` - план: `plans/bookings-demodb-bugfix-plan.md`
- Добавить раздел «Благодарности» в `README.md`: - [x] Добавить раздел «Благодарности» в `README.md`:
- явно поблагодарить Postgres Pro за демо‑БД bookings (репозиторий `postgrespro/demodb`); - явно поблагодарить Postgres Pro за демо‑БД bookings (репозиторий `postgrespro/demodb`);
- указать автора Docker‑сборки Greenplum (`woblerr/docker-greenplum`, образ `woblerr/greenplum`); - указать автора Docker‑сборки Greenplum (`woblerr/docker-greenplum`, образ `woblerr/greenplum`);
- при необходимости сослаться на соответствующие лицензии/README исходных проектов. - при необходимости сослаться на соответствующие лицензии/README исходных проектов.
- Добавить в образ Airflow установку `psql`, чтобы тестировать загрузку CSV из CLI внутри контейнера (без root и дополнительных зависимостей на хосте). - [x] Добавить в образ Airflow установку `psql`, чтобы тестировать загрузку CSV из CLI внутри контейнера (без root и дополнительных зависимостей на хосте).