Loading .gitignore 0 → 100644 +42 −0 Original line number Diff line number Diff line # Python __pycache__/ *.pyc # Docker .env volumes/ docker-compose.override.yaml # Conda miniconda3/ *.sh # Logs logs/ *.log # IDE .idea/ .vscode/ # Temporary files *.tmp *.temp # OS .DS_Store Thumbs.db # Build artifacts build/ dist/ *.egg-info/ # Environment variables .env.local .env.development.local .env.test.local .env.production.local # Database db.sqlite3 docker-celery-3.0.5/Dockerfiledeleted 100644 → 0 +0 −10 Original line number Diff line number Diff line FROM apache/airflow:3.0.5 COPY requirements.txt . RUN pip install --upgrade pip # switch to tsinghua pip/conda source RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ \ && pip config set global.extra-index-url "https://mirrors.bfsu.edu.cn/pypi/web/simple" # install requirements RUN pip install --no-cache-dir -r requirements.txt docker-celery-3.0.5/Makefile +18 −7 Original line number Diff line number Diff line all: down pull build init up all: down pull init up pull: git pull mkdir: mkdir -p ./dags ./logs ./plugins ./config ./pg_data #echo -e "AIRFLOW_UID=$(id -u)" > .env mkdir -p ./dags ./volumes/logs ./volumes/plugins ./volumes/config ./volumes/pg_data rmdir: rm -rf ./logs ./plugins ./config ./pg_data build: docker build -t csst-airflow . --no-cache rm -rf ./volumes init: docker compose up airflow-init Loading @@ -20,6 +16,21 @@ init: up: docker compose up -d up-master: docker compose -f docker-compose.yaml --env-file .env --profile flower up --force-recreate up-worker: docker compose -f docker-compose.yaml --env-file .env up worker --force-recreate copy-env-csu: cp envs/.env.csu .env copy-env-p368: cp envs/.env.p368 .env copy-env-zjlab: cp envs/.env.zjlab .env down: docker compose down Loading docker-celery-3.0.5/README.md +143 −4 Original line number Diff line number Diff line # # Airflow 部署指南 ## 本指南描述如何使用官方 Apache Airflow 3.0.5 镜像部署 Airflow 服务器,使用 CeleryExecutor、Redis 和 PostgreSQL。 ```shell ## 前提条件 - 已安装 Docker 和 Docker Compose - Git - Make ## 部署步骤 ### 1. 克隆仓库 ```bash git clone <仓库地址> cd csst-airflow/docker-celery-3.0.5 ``` ### 2. 配置环境 选择适合您设置的环境文件: ```bash # 对于 CSU 环境 make copy-env-csu # 对于 P368 环境 make copy-env-p368 # 对于 ZJLAB 环境 make copy-env-zjlab ``` ### 3. 初始化目录结构 ```bash make mkdir ``` ### 4. 初始化 Airflow ```bash make init ``` ### 5. 启动 Airflow 服务 #### 启动主服务(包括 Flower) ```bash make up-master ``` #### 启动工作节点服务 ```bash make up-worker ``` #### 在后台启动所有服务 ```bash make up ``` ## Makefile 命令 | 命令 | 描述 | |------|------| | `make all` | 完整部署:停止、拉取、初始化、启动 | | `make up-master` | 启动 Airflow 主服务和 Flower | | `make up-worker` | 启动 Airflow 工作节点 | | `make copy-env-csu` | 复制 CSU 环境文件 | | `make copy-env-p368` | 复制 P368 环境文件 | | `make copy-env-zjlab` | 复制 ZJLAB 环境文件 | | `make init` | 初始化 Airflow | | `make up` | 在后台启动所有服务 | | `make down` | 停止所有服务 | | `make migrate` | 运行数据库迁移 | | `make clean` | 清理服务 | | `make ps` | 列出运行中的服务 | | `make restart` | 重启服务 | ## 访问 Airflow - Airflow Web UI: `http://<MASTER_IP>:38080` - Flower (Celery 监控): `http://<MASTER_IP>:35555` - PostgreSQL: `localhost:35432` - Redis: `localhost:36379` ## 配置 部署使用官方 Apache Airflow 3.0.5 镜像,具有以下配置: - CeleryExecutor 用于分布式任务执行 - PostgreSQL 作为元数据数据库 - Redis 作为消息代理 - 通过环境变量进行自定义 Airflow 配置 ## 环境变量 .env 文件中的关键环境变量: - `AIRFLOW_IMAGE_NAME`: 官方 Apache Airflow 3.0.5 镜像 - `AIRFLOW_UID`: Airflow 容器的用户 ID - `MASTER_IP`: 主节点的 IP 地址 - `JWT_SECRET`: JWT 认证的密钥 - `_AIRFLOW_WWW_USER_USERNAME`: Airflow Web UI 用户名 - `_AIRFLOW_WWW_USER_PASSWORD`: Airflow Web UI 密码 ## 常见操作 ### 更新 Airflow ```bash make down # 如需更新环境文件 make up ``` ### 运行数据库迁移 ```bash make migrate ``` ### 检查服务状态 ```bash make ps ``` ### 清理 ```bash make clean ``` ## 故障排除 - 确保 Docker 正在运行 - 检查端口 38080、35555、35432 和 36379 是否可用 - 验证环境变量是否正确设置 - 检查容器日志以了解错误: ```bash docker compose logs ``` docker-celery-3.0.5/docker-compose.yaml +8 −8 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ x-airflow-common: AIRFLOW__CORE__FERNET_KEY: '' AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true' AIRFLOW__CORE__LOAD_EXAMPLES: 'false' AIRFLOW__CORE__EXECUTION_API_SERVER_URL: 'http://airflow-apiserver:8080/execution/' AIRFLOW__CORE__EXECUTION_API_SERVER_URL: 'http://${MASTER_IP}:38080/execution/' # yamllint disable rule:line-length # Use simple http server on scheduler for health checks # See https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/check-health.html#scheduler-health-check-server Loading @@ -92,8 +92,8 @@ x-airflow-common: AIRFLOW__CORE__TEST_CONNECTION: 'Enabled' AIRFLOW__LOGGING__LOGGING_LEVEL: "INFO" # API AIRFLOW__API__HOST: "${MASTER_IP}" AIRFLOW__API__PORT: 38080 AIRFLOW__API__HOST: "0.0.0.0" AIRFLOW__API__PORT: 8080 AIRFLOW__API__WORKERS: 4 # API AUTH AIRFLOW__API_AUTH__JWT_SECRET: "${JWT_SECRET}" # 从 .env 注入 Loading @@ -111,16 +111,16 @@ x-airflow-common: AIRFLOW__SCHEDULER__IGNORE_FIRST_DEPENDS_ON_PAST_BY_DEFAULT: 'true' # CELERY FLOWER AIRFLOW__CELERY__FLOWER_BASIC_AUTH: "${_AIRFLOW_WWW_USER_USERNAME}:${_AIRFLOW_WWW_USER_PASSWORD}" AIRFLOW__CELERY__FLOWER_HOST: "${MASTER_IP}" AIRFLOW__CELERY__FLOWER_HOST: "0.0.0.0" AIRFLOW__CELERY__FLOWER_PORT: 35555 AIRFLOW__CELERY__WORKER_CONCURRENCY: 64 AIRFLOW__CELERY__WORKER_AUTOSCALE: "1,64" AIRFLOW__CELERY__WORKER_PREFETCH_MULTIPLIER: 1 volumes: - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs - ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins - ${AIRFLOW_PROJ_DIR:-.}/volumes/logs:/opt/airflow/logs - ${AIRFLOW_PROJ_DIR:-.}/volumes/config:/opt/airflow/config - ${AIRFLOW_PROJ_DIR:-.}/volumes/plugins:/opt/airflow/plugins user: "${AIRFLOW_UID:-50000}:0" depends_on: &airflow-common-depends-on Loading @@ -138,7 +138,7 @@ services: POSTGRES_DB: airflow volumes: # - postgres-db-volume:/var/lib/postgresql/data - ${AIRFLOW_PROJ_DIR:-.}/pg_data:/var/lib/postgresql/data - ${AIRFLOW_PROJ_DIR:-.}/volumes/pg_data:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-U", "airflow"] interval: 10s Loading Loading
.gitignore 0 → 100644 +42 −0 Original line number Diff line number Diff line # Python __pycache__/ *.pyc # Docker .env volumes/ docker-compose.override.yaml # Conda miniconda3/ *.sh # Logs logs/ *.log # IDE .idea/ .vscode/ # Temporary files *.tmp *.temp # OS .DS_Store Thumbs.db # Build artifacts build/ dist/ *.egg-info/ # Environment variables .env.local .env.development.local .env.test.local .env.production.local # Database db.sqlite3
docker-celery-3.0.5/Dockerfiledeleted 100644 → 0 +0 −10 Original line number Diff line number Diff line FROM apache/airflow:3.0.5 COPY requirements.txt . RUN pip install --upgrade pip # switch to tsinghua pip/conda source RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ \ && pip config set global.extra-index-url "https://mirrors.bfsu.edu.cn/pypi/web/simple" # install requirements RUN pip install --no-cache-dir -r requirements.txt
docker-celery-3.0.5/Makefile +18 −7 Original line number Diff line number Diff line all: down pull build init up all: down pull init up pull: git pull mkdir: mkdir -p ./dags ./logs ./plugins ./config ./pg_data #echo -e "AIRFLOW_UID=$(id -u)" > .env mkdir -p ./dags ./volumes/logs ./volumes/plugins ./volumes/config ./volumes/pg_data rmdir: rm -rf ./logs ./plugins ./config ./pg_data build: docker build -t csst-airflow . --no-cache rm -rf ./volumes init: docker compose up airflow-init Loading @@ -20,6 +16,21 @@ init: up: docker compose up -d up-master: docker compose -f docker-compose.yaml --env-file .env --profile flower up --force-recreate up-worker: docker compose -f docker-compose.yaml --env-file .env up worker --force-recreate copy-env-csu: cp envs/.env.csu .env copy-env-p368: cp envs/.env.p368 .env copy-env-zjlab: cp envs/.env.zjlab .env down: docker compose down Loading
docker-celery-3.0.5/README.md +143 −4 Original line number Diff line number Diff line # # Airflow 部署指南 ## 本指南描述如何使用官方 Apache Airflow 3.0.5 镜像部署 Airflow 服务器,使用 CeleryExecutor、Redis 和 PostgreSQL。 ```shell ## 前提条件 - 已安装 Docker 和 Docker Compose - Git - Make ## 部署步骤 ### 1. 克隆仓库 ```bash git clone <仓库地址> cd csst-airflow/docker-celery-3.0.5 ``` ### 2. 配置环境 选择适合您设置的环境文件: ```bash # 对于 CSU 环境 make copy-env-csu # 对于 P368 环境 make copy-env-p368 # 对于 ZJLAB 环境 make copy-env-zjlab ``` ### 3. 初始化目录结构 ```bash make mkdir ``` ### 4. 初始化 Airflow ```bash make init ``` ### 5. 启动 Airflow 服务 #### 启动主服务(包括 Flower) ```bash make up-master ``` #### 启动工作节点服务 ```bash make up-worker ``` #### 在后台启动所有服务 ```bash make up ``` ## Makefile 命令 | 命令 | 描述 | |------|------| | `make all` | 完整部署:停止、拉取、初始化、启动 | | `make up-master` | 启动 Airflow 主服务和 Flower | | `make up-worker` | 启动 Airflow 工作节点 | | `make copy-env-csu` | 复制 CSU 环境文件 | | `make copy-env-p368` | 复制 P368 环境文件 | | `make copy-env-zjlab` | 复制 ZJLAB 环境文件 | | `make init` | 初始化 Airflow | | `make up` | 在后台启动所有服务 | | `make down` | 停止所有服务 | | `make migrate` | 运行数据库迁移 | | `make clean` | 清理服务 | | `make ps` | 列出运行中的服务 | | `make restart` | 重启服务 | ## 访问 Airflow - Airflow Web UI: `http://<MASTER_IP>:38080` - Flower (Celery 监控): `http://<MASTER_IP>:35555` - PostgreSQL: `localhost:35432` - Redis: `localhost:36379` ## 配置 部署使用官方 Apache Airflow 3.0.5 镜像,具有以下配置: - CeleryExecutor 用于分布式任务执行 - PostgreSQL 作为元数据数据库 - Redis 作为消息代理 - 通过环境变量进行自定义 Airflow 配置 ## 环境变量 .env 文件中的关键环境变量: - `AIRFLOW_IMAGE_NAME`: 官方 Apache Airflow 3.0.5 镜像 - `AIRFLOW_UID`: Airflow 容器的用户 ID - `MASTER_IP`: 主节点的 IP 地址 - `JWT_SECRET`: JWT 认证的密钥 - `_AIRFLOW_WWW_USER_USERNAME`: Airflow Web UI 用户名 - `_AIRFLOW_WWW_USER_PASSWORD`: Airflow Web UI 密码 ## 常见操作 ### 更新 Airflow ```bash make down # 如需更新环境文件 make up ``` ### 运行数据库迁移 ```bash make migrate ``` ### 检查服务状态 ```bash make ps ``` ### 清理 ```bash make clean ``` ## 故障排除 - 确保 Docker 正在运行 - 检查端口 38080、35555、35432 和 36379 是否可用 - 验证环境变量是否正确设置 - 检查容器日志以了解错误: ```bash docker compose logs ```
docker-celery-3.0.5/docker-compose.yaml +8 −8 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ x-airflow-common: AIRFLOW__CORE__FERNET_KEY: '' AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true' AIRFLOW__CORE__LOAD_EXAMPLES: 'false' AIRFLOW__CORE__EXECUTION_API_SERVER_URL: 'http://airflow-apiserver:8080/execution/' AIRFLOW__CORE__EXECUTION_API_SERVER_URL: 'http://${MASTER_IP}:38080/execution/' # yamllint disable rule:line-length # Use simple http server on scheduler for health checks # See https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/check-health.html#scheduler-health-check-server Loading @@ -92,8 +92,8 @@ x-airflow-common: AIRFLOW__CORE__TEST_CONNECTION: 'Enabled' AIRFLOW__LOGGING__LOGGING_LEVEL: "INFO" # API AIRFLOW__API__HOST: "${MASTER_IP}" AIRFLOW__API__PORT: 38080 AIRFLOW__API__HOST: "0.0.0.0" AIRFLOW__API__PORT: 8080 AIRFLOW__API__WORKERS: 4 # API AUTH AIRFLOW__API_AUTH__JWT_SECRET: "${JWT_SECRET}" # 从 .env 注入 Loading @@ -111,16 +111,16 @@ x-airflow-common: AIRFLOW__SCHEDULER__IGNORE_FIRST_DEPENDS_ON_PAST_BY_DEFAULT: 'true' # CELERY FLOWER AIRFLOW__CELERY__FLOWER_BASIC_AUTH: "${_AIRFLOW_WWW_USER_USERNAME}:${_AIRFLOW_WWW_USER_PASSWORD}" AIRFLOW__CELERY__FLOWER_HOST: "${MASTER_IP}" AIRFLOW__CELERY__FLOWER_HOST: "0.0.0.0" AIRFLOW__CELERY__FLOWER_PORT: 35555 AIRFLOW__CELERY__WORKER_CONCURRENCY: 64 AIRFLOW__CELERY__WORKER_AUTOSCALE: "1,64" AIRFLOW__CELERY__WORKER_PREFETCH_MULTIPLIER: 1 volumes: - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs - ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins - ${AIRFLOW_PROJ_DIR:-.}/volumes/logs:/opt/airflow/logs - ${AIRFLOW_PROJ_DIR:-.}/volumes/config:/opt/airflow/config - ${AIRFLOW_PROJ_DIR:-.}/volumes/plugins:/opt/airflow/plugins user: "${AIRFLOW_UID:-50000}:0" depends_on: &airflow-common-depends-on Loading @@ -138,7 +138,7 @@ services: POSTGRES_DB: airflow volumes: # - postgres-db-volume:/var/lib/postgresql/data - ${AIRFLOW_PROJ_DIR:-.}/pg_data:/var/lib/postgresql/data - ${AIRFLOW_PROJ_DIR:-.}/volumes/pg_data:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-U", "airflow"] interval: 10s Loading