Windows下Docker Compose部署Airflow:迁移SQLite数据库至本地
把Airflow容器内的SQLite数据库迁移到Windows本地
步骤1:确认容器内SQLite文件路径
Airflow默认的SQLite数据库文件路径为/opt/airflow/airflow.db,先验证你的容器是否使用该路径:
# 执行命令查看运行中的容器,获取Airflow容器名称或ID docker ps # 进入容器(替换<container-name-or-id>为实际容器名/ID) docker exec -it <container-name-or-id> bash # 检查文件是否存在 ls /opt/airflow/airflow.db
如果路径不同,可查看容器内/opt/airflow/airflow.cfg配置文件里的sql_alchemy_conn项,确认实际数据库路径。
步骤2:将容器内数据库文件复制到本地
在Windows的PowerShell或CMD中执行命令,把容器内的数据库文件复制到本地指定目录(比如D:\airflow-local-db,可自行替换):
# 替换<container-name-or-id>和<local-path>为实际值 docker cp <container-name-or-id>:/opt/airflow/airflow.db <local-path> # 示例:docker cp airflow-webserver-1:/opt/airflow/airflow.db D:\airflow-local-db\airflow.db
步骤3:修改Docker Compose配置
找到你的docker-compose.yml文件,在Airflow核心服务(webserver、scheduler、worker)的volumes节点下添加本地路径到容器路径的映射:
services: webserver: volumes: # 保留原有挂载项,新增以下映射 - D:/airflow-local-db/airflow.db:/opt/airflow/airflow.db scheduler: volumes: - D:/airflow-local-db/airflow.db:/opt/airflow/airflow.db worker: volumes: - D:/airflow-local-db/airflow.db:/opt/airflow/airflow.db
注意:Windows路径在Docker Compose中需用斜杠
/或双反斜杠\\,替换成你实际的本地文件路径。
步骤4:重启Airflow服务
在docker-compose.yml所在目录执行命令,重启服务使挂载生效:
docker-compose down docker-compose up -d
步骤5:验证迁移结果
重启后可通过两种方式验证:
- 打开Airflow UI,查看原有DAG的运行记录、任务实例是否正常显示;
- 进入容器检查数据库文件状态:
docker exec -it <container-name-or-id> bash # 查看文件挂载关联 ls -l /opt/airflow/airflow.db # 查询数据库数据,验证完整性 sqlite3 /opt/airflow/airflow.db "SELECT COUNT(*) FROM task_instance;"
注意事项:
- 确保本地文件夹权限允许Docker容器读写,Windows下可右键文件夹→属性→安全,给当前用户添加完全控制权限;
- 如果后续修改本地数据库文件,需重启Airflow服务才能让容器识别到变更。
内容的提问来源于stack exchange,提问作者gosia
相关产品推荐
相关产品推荐

