阅读documentation,它说:
根据运行时的不同,应用程序可以通过两种方式打包:
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
答案 0 :(得分:0)
SCDF的本地,cf和k8s服务器实现支持Docker解析。但是,每个服务器变体都有一种在运行时向应用程序提供env-vars的特定方法。例如,请参阅Kubernetes-server文档。
对于应用程序类型,SCDF今天编排了Spring Boot应用程序。 SCDF无法原生解释其他类型的工作负载。
也就是说,如果您打算使用python进行流处理,我们提供了一种机制来通过python-processor应用程序运行Python脚本,并且在运行时,它将从容器内调用脚本。查看示例here。
对于任务,我们没有类似的应用程序,但它可能与python-processor的功能相同,但使用Spring Cloud Task编程模型而不是Spring Cloud Stream。也许你可以尝试一下并将其贡献给项目。
答案 1 :(得分:0)
一种调用Python Docker映像的方法是创建一个Java处理器,并以DinD-java作为基础映像对其进行Docker化。然后在此处理器内使用Docker API调用Python Docker映像。此处说明-https://dzone.com/articles/how-to-run-any-dockerized-application-on-spring-cl