Как настроить Airflow внутри Docker с использованием локальной базы данных PostgreSQL?

Как настроить соединение из контейнера Docker, в котором запущен Apache Airflow, к локально запущенной PostgreSQL в Ubuntu 24.04?
  • 14 мая 2024 г. 13:41
Ответы на вопрос 2
Для настройки Airflow внутри Docker с использованием локальной базы данных PostgreSQL, следуйте данным шагам:

1. Создайте файл `docker-compose.yaml` с конфигурацией для запуска контейнеров Airflow и PostgreSQL:

```yaml
version: '3'
services:
  postgres:
    image: postgres:latest
    container_name: postgres
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
    ports:
      - "5432:5432"

  airflow:
    image: apache/airflow:latest
    container_name: airflow
    environment:
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
    ports:
      - "8080:8080"
    depends_on:
      - postgres
```

2. Запустите контейнеры с помощью команды `docker-compose up -d`.

3. После запуска контейнеров, выполните команду `docker exec -it airflow bash` для входа в контейнер Apache Airflow.

4. Внутри контейнера убедитесь, что установлен пакет `psycopg2` с помощью команды `pip install psycopg2`.

5. Теперь вы можете запустить DAGs и управлять задачами Airflow через веб-интерфейс, доступный по адресу `http://localhost:8080`.

Чтобы настроить соединение из контейнера Docker к локально запущенной PostgreSQL в Ubuntu 24.04, укажите `localhost` в качестве хоста и порт `5432` в файле `docker-compose.yaml`:

```yaml
environment:
  AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@localhost:5432/airflow
```

Затем перезапустите контейнеры с помощью `docker-compose up -d`, и Airflow будет подключаться к локальной базе данных PostgreSQL.
соиденяться надо не на localhost а на host.docker.internal
Похожие вопросы