首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在气流中将环境变量从主机传递到DockerOperator

在气流中将环境变量从主机传递到DockerOperator
EN

Stack Overflow用户
提问于 2022-08-08 16:05:24
回答 1查看 352关注 0票数 1

我现在有一个带有python映像的Docker容器,我在这里运行cron作业。我使用一个坞编写文件来运行它,在这里,我将令牌从主机(我的Macbook)作为环境变量传递给容器。

代码语言:javascript
复制
version: '3.8'
services:
  backend:
    container_name: py-cont
    build: .
    environment:
      GOOGLE_ADS_TOKEN: ${GOOGLE_ADS_TOKEN}

我想将cron作业迁移到AirFlow (使用这里中的停靠-组合文件运行),在这里我想使用DockerOperator,但是我不知道如何从主机传递环境变量,以实现我的对接者-组合所做的事情。

这是我的DAG,它在运行时将KeyError抛到AirFlow日志中,试图获取不存在的env ( var来源于主机,通过回显确认):

代码语言:javascript
复制
DockerOperator(
dag=dag,
task_id='refresh_tickers',
image='mypythonimage',
api_version='auto',
auto_remove=True,
environment={
'GOOGLE_ADS_TOKEN': os.environ['GOOGLE_ADS_TOKEN']
},
command='echo $GOOGLE_ADS_TOKEN',
docker_url='tcp://docker-proxy:2375',
network_mode='bridge',
)

我刚开始接触AirFlow,我可能误解了这个例子中的主机是什么,它是在拼图中定义的许多容器中的一个,而不是我的macbook吗?这可能会让人感到困惑,因为DockerOperator的卷参数将我的本地(Macbook)文件路径安装到容器中,没有任何问题。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-08 19:45:07

第一步是检查主机中是否存在env变量:

代码语言:javascript
复制
echo $GOOGLE_ADS_TOKEN

第二步是将env变量添加到所有调度程序和所有员工容器中,为此您需要更新docker-组合文件。

代码语言:javascript
复制
version: '3'
x-airflow-common:
  &airflow-common
  # In order to add custom dependencies or upgrade provider packages you can use your extended image.
  # Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml
  # and uncomment the "build" line below, Then run `docker-compose build` to build the images.
  image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.3.3}
  # build: .
  environment:
    &airflow-common-env
    AIRFLOW__CORE__EXECUTOR: CeleryExecutor
    ...
    _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
    GOOGLE_ADS_TOKEN: ${GOOGLE_ADS_TOKEN}

最后一步是检查工作容器中是否存在env变量:

代码语言:javascript
复制
docker-compose exec airflow-worker bash -c 'echo "$GOOGLE_ADS_TOKEN"'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73280926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档