在Spring Cloud Data Flow服务器上部署dockerized应用程序

时间:2018-04-04 12:32:40

标签: docker spring-cloud-dataflow spring-cloud-task

阅读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

2 个答案:

答案 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