【问题标题】:How can I run jupyter in airflow with docker-compose?如何使用 docker-compose 在气流中运行 jupyter?
【发布时间】:2021-12-03 20:35:09
【问题描述】:

我想在我的 dockerized 气流上插入一个 jupyter 服务器,以便我可以在那个环境中更轻松地开发。我从Using Docker-Compose, how to execute multiple commands 看到。您可以使用 'bash -c' 在 docker-compose 中轻松运行多个命令。

这是我尝试过的:

command: bash -c "airflow webserver ; nohup jupyter notebook --ip 0.0.0.0  --no-browser &"

也试过了:

command: bash -c "airflow webserver && nohup jupyter notebook --ip 0.0.0.0  --no-browser &"

我知道这是可能的,因为我可以这样做:

docker exec -it -u airflow  8b2 jupyter notebook --ip 0.0.0.0  --NotebookApp.token='airflow' --no-browser

这当然需要为j添加端口8888:8888映射:

ports:
  - ${AIRFLOW_WEBSERVER_PORT:-8080}:8080
  - 8888:8888

谢谢!

【问题讨论】:

    标签: docker-compose airflow jupyter


    【解决方案1】:

    在一个容器内部署多个应用程序并不是最佳做法。每个容器都应该做一件事并做好。 reference

    您可以执行以下操作:

    1. 将 Airflow 和 Jupyter 分离到单独的容器中。
    2. 使用 Docker 网络将两者连接起来。

    让我向您展示this project,它可以满足您的大部分需求并且非常适合我。看看它。你可能会受到启发。

    【讨论】:

      【解决方案2】:

      正如@Numb95 指出的那样,最好通过指定一个专用的 jupyter 容器来解决这个问题。

      此时的“快速启动”docker-compose 是:https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml

      使用上面的快速启动 docker-compose 作为 guid,下面的代码可以放在 docker-compose.yaml 中,但需要使用 jupyter-corejupyter 自定义编译其中指定的气流图像:

        airflow-jupyter:
          <<: *airflow-common
          #image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.2.2}
          image: <CUSTOM_IMAGE_DESCRIBED_ABOVE>
          container_name: airflow_jupyter
          command: bash -cx "jupyter notebook --ip 0.0.0.0  --NotebookApp.token='airflow' --no-browser"
          ports:
            - 8888:8888
          restart: always
          depends_on:
            <<: *airflow-common-depends-on
            airflow-init:
              condition: service_completed_successfully
      

      要安装 jupyter 包,需要重新构建 DockerFile 以包含:

      RUN pip install -U jupyter-core --user
      RUN pip install -U jupyter --user
      RUN chmod -R 775 /home/airflow/.local/share/jupyter
      

      【讨论】:

      • 只是添加“docker-composer”只是一个“快速启动”,它不是“在 Docker Compose 中运行气流的官方方式”。 Docker Compose 的特性是您几乎总是应该根据自己的需要编写自己的 docker compose。编写 docker-compose 并使之成为“可扩展”是不可能的。您主要靠自己根据需要进行修改,您需要成为“docker-compose 专家”才能从中获得一些自定义行为
      • 关于 docker-compuse 是一个快速入门的公平点。感谢您的更正。我已将上述答案中的“官方”一词更改为“快速入门”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      相关资源
      最近更新 更多