Sign inSign up

tyurnin/airflow

By tyurnin

•Updated almost 2 years ago

Image
Databases & storage
0

876

tyurnin/airflow repository overview

⁠docker-compose.yml

version: '3.8'

volumes:
  postgresql_data:
  logs:

services:
  postgres:
    image: postgres:13
    platform: linux/amd64
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    restart: always
    networks:
      - my_network
    ports:
      - "5432:5432"

  webserver:
    image: tyurnin/airflow:latest
    platform: linux/amd64
    depends_on:
      - postgres
    environment:
      AIRFLOW__CORE__EXECUTOR: ${AIRFLOW__CORE__EXECUTOR}
      AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
      AIRFLOW__CORE__LOAD_EXAMPLES: ${AIRFLOW__CORE__LOAD_EXAMPLES}
      AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE: ${AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE}
      AIRFLOW__WEBSERVER__RBAC: ${AIRFLOW__WEBSERVER__RBAC}
      AIRFLOW__WEBSERVER__BASE_URL: ${AIRFLOW__WEBSERVER__BASE_URL}
      AIRFLOW__CORE__FERNET_KEY: ${AIRFLOW__CORE__FERNET_KEY}
    volumes:
      - ./data/dags:/opt/airflow/dags
      - ./data/plugins:/opt/airflow/plugins
      - ./logs/airflow:/opt/airflow/logs
    command: >
      bash -c "mkdir -p /opt/airflow/logs && chmod -R 777 /opt/airflow/logs &&
               airflow db upgrade &&
               (airflow users list | grep -q 'admin' || airflow users create --username admin --password admin --firstname Admin --lastname User --role Admin --email [email protected]) &&
               airflow webserver"
    ports:
      - "8080:8080"
    restart: always
    networks:
      - my_network

  scheduler:
    image: tyurnin/airflow:latest
    platform: linux/amd64
    depends_on:
      - webserver
      - postgres
    environment:
      AIRFLOW__CORE__EXECUTOR: ${AIRFLOW__CORE__EXECUTOR}
      AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
    volumes:
      - ./data/dags:/opt/airflow/dags
      - ./data/plugins:/opt/airflow/plugins
      - ./logs/airflow:/opt/airflow/logs
    command: scheduler
    restart: always
    networks:
      - my_network

networks:
  my_network:
    driver: bridge

⁠Добавлены библиотеки:

# requirements.txt

jira
keyring
openpyxl
pandas
pyzabbix
requests_ntlm
shareplum

⁠Dockerfile

FROM apache/airflow:2.7.0

USER airflow

# Копируем файл requirements.txt
COPY --chown=airflow:airflow requirements.txt /requirements.txt

# Устанавливаем зависимости с использованием пользователя airflow
RUN pip install --no-cache-dir -r /requirements.txt

# Переключаемся на пользователя root для изменения прав
USER root

# Создаем директории, если они не существуют, и устанавливаем права
RUN mkdir -p /opt/airflow/dags /opt/airflow/plugins && chmod -R 777 /opt/airflow/dags /opt/airflow/plugins

# Возвращаемся к пользователю airflow
USER airflow

⁠docker-compose.build.yml

version: '3.8'

services:
  airflow:
    build: .
    image: custom_airflow:latest
    platform: linux/amd64

  postgres:
    image: postgres:13
    platform: linux/amd64
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
    volumes:
      - postgresql_data:/var/lib/postgresql/data
    restart: always

volumes:
  postgresql_data:

Tag summary

Content type

Image

Digest

sha256:5a27312d6…

Size

417.6 MB

Last updated

almost 2 years ago

docker pull tyurnin/airflow