1

阅读文档,它说:

根据运行时,可以通过两种方式打包应用程序:

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

Docker image.

所以我制作了一个运行 hello-world python程序的 docker 镜像,并在本地 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 来运行任何 dockerized 应用程序,或者它只支持 Spring Boot (java)?

PS:我的Dockerfile

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

2 回答 2

0

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

于 2018-09-13T23:56:12.587 回答
0

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

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

也就是说,如果您打算使用 python 进行流处理,我们提供了一种机制来通过python 处理器应用程序运行 Python 脚本,并且在运行时,它将从容器内调用脚本。在此处查看示例。

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

于 2018-04-04T19:40:00.733 回答