我如何 运行 jupyter in airflow with docker-compose?

How can I run jupyter in airflow with docker-compose?

我想在我的 dockerized airflow 上安装一个 jupyter 服务器,这样我就可以在那个环境中更轻松地开发。我从 看到。您可以轻松地 运行 docker 中的多个命令-与 'bash -c' 组合。

这是我试过的方法:

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

谢谢!

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

您可以执行以下操作:

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

让我向您展示 this project 可以满足您的大部分需求并且对我来说效果很好。看看它。你可能会从中得到启发。

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

此时的'quick-start'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