agriquery / docker-compose.yaml
udituen's picture
prompt engineering
bb8424a
x-airflow-common:
&airflow-common
build:
context: ./airflow
dockerfile: Dockerfile.airflow
environment:
&airflow-common-env
AIRFLOW__CORE__EXECUTOR: LocalExecutor
AIRFLOW__CORE__AUTH_MANAGER: airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CORE__FERNET_KEY: ${AIRFLOW__CORE__FERNET_KEY} # needed for multiuser or production
AIRFLOW__API_AUTH__JWT_SECRET: ${JWT_SECRET}
AIRFLOW__WEBSERVER__SECRET_KEY: ${AIRFLOW__WEBSERVER__SECRET_KEY}
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
AIRFLOW__WEBSERVER__BASE_URL: http://localhost:8080
AIRFLOW__CORE__EXECUTION_API_SERVER_URL: 'http://airflow-apiserver:8080/execution/'
AIRFLOW__SCHEDULER__ENABLE_HEALTH_CHECK: 'true'
# _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
AIRFLOW_CONFIG: '/opt/airflow/config/airflow.cfg'
# MLFLOW_TRACKING_URI: 'http://mlflow:5000'
volumes:
- ${AIRFLOW_PROJ_DIR:-.}/airflow/dags:/opt/airflow/dags
- ${AIRFLOW_PROJ_DIR:-.}/airflow/logs:/opt/airflow/logs
- ${AIRFLOW_PROJ_DIR:-.}/airflow/config:/opt/airflow/config
- ${AIRFLOW_PROJ_DIR:-.}/airflow/plugins:/opt/airflow/plugins
- ${AIRFLOW_PROJ_DIR:-.}/data:/opt/airflow/data
- ${AIRFLOW_PROJ_DIR:-.}/scripts:/opt/airflow/scripts
- ${AIRFLOW_PROJ_DIR:-.}/model:/opt/airflow/model
- ${AIRFLOW_PROJ_DIR:-.}/app:/opt/airflow/app
user: "${AIRFLOW_UID:-50000}:0"
depends_on:
&airflow-common-depends-on
postgres:
condition: service_healthy
services:
postgres:
image: postgres:13
environment:
POSTGRES_USER: ${POSTGRES_USER} # using nginx would provide an added measure of security wnen in production
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: airflow
volumes:
- postgres-db-volume:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "airflow"]
interval: 10s
retries: 5
start_period: 5s
restart: always
airflow-apiserver:
<<: *airflow-common
command: api-server
ports:
- "8080:8080"
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:8080/api/v2/version"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
restart: always
depends_on:
<<: *airflow-common-depends-on
airflow-init:
condition: service_completed_successfully
airflow-scheduler:
<<: *airflow-common
command: scheduler
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:8974/health"]
interval: 30s
timeout: 60s
retries: 5
start_period: 30s
restart: always
depends_on:
airflow-init:
condition: service_completed_successfully
airflow-dag-processor:
<<: *airflow-common
command: dag-processor
healthcheck:
test: ["CMD-SHELL", 'airflow jobs check --job-type DagProcessorJob --hostname "$${HOSTNAME}"']
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
restart: always
depends_on:
airflow-init:
condition: service_completed_successfully
airflow-triggerer:
<<: *airflow-common
command: triggerer
healthcheck:
test: ["CMD-SHELL", 'airflow jobs check --job-type TriggererJob --hostname "$${HOSTNAME}"']
interval: 40s
timeout: 10s
retries: 5
start_period: 40s
restart: always
depends_on:
airflow-init:
condition: service_completed_successfully
airflow-init:
<<: *airflow-common
entrypoint: /bin/bash
command:
- -c
- |
[[ -z "${AIRFLOW_UID}" ]] && export AIRFLOW_UID=$(id -u)
mkdir -p /opt/airflow/{logs,dags,plugins,config}
/entrypoint airflow config list >/dev/null
chown -R "${AIRFLOW_UID}:0" /opt/airflow
ls -la /opt/airflow/{logs,dags,plugins,config}
environment:
<<: *airflow-common-env
_AIRFLOW_DB_MIGRATE: 'true'
_AIRFLOW_WWW_USER_CREATE: 'true'
_AIRFLOW_WWW_USER_USERNAME: ${AIRFLOW_WWW_USER_USERNAME}
_AIRFLOW_WWW_USER_PASSWORD: ${AIRFLOW_WWW_USER_PASSWORD}
# _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS}
user: "0:0"
airflow-cli:
<<: *airflow-common
profiles: [debug]
command:
- bash
- -c
- airflow
environment:
<<: *airflow-common-env
CONNECTION_CHECK_MAX_COUNT: "0"
depends_on:
postgres:
condition: service_healthy
rag-api:
build: ./app
ports:
- "8000:8000"
volumes:
- ./vectorstore:/app/vectorstore
# streamlit:
# container_name: streamlit_app
# build:
# context: ./app
# dockerfile: Dockerfile.streamlit
# volumes:
# - ./app:/app
# - ./data:/data
# - ./script:/script
# working_dir: /app
# ports:
# - "127.0.0.1:8501:8501"
# mlflow:
# build:
# context: ./mlflow
# dockerfile: Dockerfile.mlflow
# ports:
# - "127.0.0.1:5000:5000"
# Optional nginx reverse proxy for shared/internal environments
# nginx:
# image: nginx:alpine
# ports:
# - "80:80"
# volumes:
# - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
# - ./nginx/htpasswd:/etc/nginx/.htpasswd:ro
# depends_on:
# - airflow-apiserver
# - mlflow
# - streamlit
volumes:
postgres-db-volume: