在 Spring 云数据流服务器上部署 dockerized 应用程序

Deploying dockerized apps on Spring Cloud Data Flow server

阅读 documentation,它说:

Depending on the runtime, applications can be packaged in two ways:

Spring Boot uber-jar that is hosted in a maven repository, file, or HTTP(S).

Docker image.

所以我制作了一个 docker 图像,运行 是一个 hello-world python 程序,并在本地 SCDF 服务器上注册了它.

app register --name hello-world --type task --uri docker:hello-world:latest

但是当我尝试将其作为任务启动时,它失败了

task create --name helloTask --definition "hello-world"

task launch helloTask 

Command failed org.springframework.cloud.dataflow.rest.client.DataFlowClientException: Exception trying to launch....resource = Docker Resource [docker:hello-world:latest]]

我需要另一个服务器环境吗?哪一个?问题是,是否可以将 SCDF 用于 运行 任何 docker 化的应用程序,或者它仅支持 Spring 引导 (java) ?

PS: 我的 Dockerfile

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
CMD python app.py

SCDF 的本地、cf 和 k8s 服务器实现支持 Docker 分辨率。但是,每个服务器变体都有在 运行 时间向应用程序提供 env-vars 的特定方式。例如,请参阅 Kubernetes-server 文档。

至于应用程序类型,SCDF 今天编排了 Spring 启动应用程序。 SCDF 无法本地解释其他类型的工作负载。

就是说,如果您打算使用 python 进行流处理,我们会通过 python-processor apps and at runtime, it would invoke the script from within the container. See a sample here.[=11 为 运行 Python 脚本提供一种机制=]

具体到 Tasks,我们没有类似的应用程序,但它可能与 python-processor(s) 所做的相同,但使用 Spring Cloud Task 编程模型而不是 Spring 云流。也许您可以尝试一下并将其贡献回项目中。

调用 Python Docker 图像的一种方法是创建一个 Java 处理器并使用 DinD-java 作为基础图像对其进行 docker 化。然后在这个处理器中使用 Docker API 来调用 Python Docker 图像。这在这里解释 - https://dzone.com/articles/how-to-run-any-dockerized-application-on-spring-cl