我正在尝试将气流从 2.6.1 升级到 2.9.1。 docker 容器不断退出并出现错误:
ERROR: You need to upgrade the database. Please run
airflow db Upgrade. Make sure the command is run using Airflow version 2.9.1.
我可以在 2.6.1 上运行容器来运行
airflow db migrate -s --from-version "2.6.1" -n "2.9.1"
吗?
我尝试在 Dockerfile 中运行airflow db migrate,但它并没有升级实际的数据库
要将 Apache Airflow 从版本 2.6.1 更新到 2.9.1 并解决数据库迁移问题,请按照以下步骤操作:
使用 Airflow 2.9.1 启动容器来执行迁移:
首先,您需要使用新版本的Airflow(2.9.1)运行容器并执行数据库迁移。
Docker Compose: 如果您使用 Docker Compose,请编辑
docker-compose.yml
将 Airflow 映像更新至 2.9.1。
version: '3'
services:
webserver:
image: apache/airflow:2.9.1
# Rest of the configuration
scheduler:
image: apache/airflow:2.9.1
# Rest of the configuration
# Other services
Docker Run: 如果您使用
docker run
,请指定镜像的新版本:
docker run -d --name airflow-webserver apache/airflow:2.9.1
docker run -d --name airflow-scheduler apache/airflow:2.9.1
运行数据库迁移:
新版本容器运行后,您需要访问容器并运行
airflow db upgrade
命令。
docker exec -it <container_id_or_name> bash
airflow db upgrade
这将确保数据库升级到正确的版本。
重新启动容器:
迁移数据库后,重新启动 Airflow 容器以确保应用所有更改。
docker-compose down
docker-compose up -d
或者,如果使用
docker run
:
docker stop <container_id_or_name>
docker start <container_id_or_name>
验证:
检查 Airflow 日志以确保升级和数据库迁移成功。
docker logs <container_id_or_name>
如果您想在 Dockerfile 中包含数据库升级,请添加一条命令以在容器构建期间执行迁移:
FROM apache/airflow:2.9.1
USER root
# Install additional dependencies if needed
# RUN apt-get update && apt-get install -y ...
USER airflow
# Copy your configuration files and DAGs
COPY your_dag_folder /opt/airflow/dags
# Command to run the database upgrade
RUN airflow db upgrade
# Default Airflow entry point
ENTRYPOINT ["/entrypoint.sh"]
CMD ["webserver"]
但是请注意,如果在容器构建期间无法访问数据库,则以这种方式运行数据库迁移可能会失败。在启动容器后作为单独的步骤执行迁移通常更安全。
通过执行这些步骤,您应该能够升级 Airflow 并成功执行数据库迁移。