升级docker容器内的airflow数据库

问题描述 投票:0回答:1

我正在尝试将气流从 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,但它并没有升级实际的数据库

airflow
1个回答
0
投票

要将 Apache Airflow 从版本 2.6.1 更新到 2.9.1 并解决数据库迁移问题,请按照以下步骤操作:

  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
    
  2. 运行数据库迁移:

    新版本容器运行后,您需要访问容器并运行

    airflow db upgrade
    命令。

    docker exec -it <container_id_or_name> bash
    airflow db upgrade
    

    这将确保数据库升级到正确的版本。

  3. 重新启动容器:

    迁移数据库后,重新启动 Airflow 容器以确保应用所有更改。

    docker-compose down
    docker-compose up -d
    

    或者,如果使用

    docker run
    :

    docker stop <container_id_or_name>
    docker start <container_id_or_name>
    
  4. 验证:

    检查 Airflow 日志以确保升级和数据库迁移成功。

    docker logs <container_id_or_name>
    

带有数据库升级的 Dockerfile

如果您想在 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 并成功执行数据库迁移。

© www.soinside.com 2019 - 2024. All rights reserved.