Python 重新启动docker容器时,Airflow变量的值无效
在气流的某个远程实例中有一长串DAG和相关气流变量,其副本正在我的本地系统中运行。远程气流实例中的所有变量都导入到本地气流实例中 我在docker顶部安装了气流图像,然后启动了容器。一切正常,我可以从本地系统访问airflow UI 问题: 每当我重新启动airflow容器时,在上一个容器运行期间导入的所有变量都会像这样无效。 解决问题 再次导入变量以修复与变量相关的错误Python 重新启动docker容器时,Airflow变量的值无效,python,docker,airflow,airflow-operator,Python,Docker,Airflow,Airflow Operator,在气流的某个远程实例中有一长串DAG和相关气流变量,其副本正在我的本地系统中运行。远程气流实例中的所有变量都导入到本地气流实例中 我在docker顶部安装了气流图像,然后启动了容器。一切正常,我可以从本地系统访问airflow UI 问题: 每当我重新启动airflow容器时,在上一个容器运行期间导入的所有变量都会像这样无效。 解决问题 再次导入变量以修复与变量相关的错误 然而,每次容器启动时导入变量确实令人沮丧。必须有一种明智的方法来实现这一点。请帮助我了解我做错了什么。此问题的根本原因是。
然而,每次容器启动时导入变量确实令人沮丧。必须有一种明智的方法来实现这一点。请帮助我了解我做错了什么。此问题的根本原因是。 手动导入变量时,变量的
已加密
属性将自动设置为True
每当您重新启动容器时,都会生成新的加密密钥,因此旧密钥会变得无效
您有3个选项:
- 在afflow.cfg中明确设置
fernet_键
- 将
属性设置为is_encrypted
()False
docker compose.yml
文件如下所示:
environment:
- LOAD_EX=n
- EXECUTOR=Local
- AIRFLOW__CORE__FERNET_KEY='81HqDtbqAywKSOumSha3BhWNOdQ26slT6K0YaZeZyPs='
由于重新启动docker容器时会生成新的加密密钥 为了确保使用相同的加密密钥,您必须在配置文件中硬编码FERNET_密钥,或者在容器最初运行时传递env变量
docker run -it -p 8888:8080 -v D:\dev\Dags:/usr/local/airflow/dags -e FERNET_KEY=81HqDtbqAywKSOumSha3BhWNOdQ26slT6K0YaZeZyPs= --name my_airflow_dags airflow_image
这里的Fernet钥匙可以是任何东西。提供此密钥后,docker可以在每次重新启动容器时重复使用相同的密钥。您是否正在使用
SQLite
?若有,;确保SQLite存储目录[1]正确安装在docker容器上[2]具有正确的权限。我可以在配置文件中看到类似“sql alchemy…”的变量。例如,sql炼金术池大小、sql炼金术池回收、sql炼金术池启用等等。虽然它的文件很长,但我不知道它到底做了什么?