首页 > 解决方案 > Spring Cloud Data Flow java DSL:容器属性

问题描述

我有一个 SCDF 本地部署,我想在其中部署一个基于 docker 的自定义接收器。该接收器内部由一个 java 部分组成,该部分充当 SCDF 和另一位非 java 代码之间的转换包装器。

我需要能够控制

  1. 容器名称
  2. 实例数
  3. 安装到容器的卷
  4. 映射到容器的端口
  5. 传递给非java代码的环境变量

看着,LocalAppDeployer似乎DockerCommandBuilder我应该能够用类似的东西做(1)和(2)

HashMap<String,String> params = new HashMap<>();
params.put(AppDeployer.COUNT_PROPERTY_KEY,2);
params.put(AppDeployer.GROUP_PROPERTY_KEY,"foo");

Stream.builder(scdf)
                .name("mystream")
                .definition("file|bar")
                .create()
                .deploy(props);

我希望给我 2 个容器:我foo-bar-1foo-bar-2 问题是如何归档 (3)、(4) 和 (5)?

标签: spring-cloud-dataflow

解决方案


对于将来的任何搜索:
TL;DR:使用deployer.<appName>.local.docker.volume-mountsdeployer.<appName>s.local.docker.port-mappings

例如:

Map<String, String> properties = new HashMap<>();
 
properties.put(String.format("deployer.%s.local.docker.volume-mounts", "myApp"),"/tmp/foo:/bar");

properties.put(String.format("deployer.%s.local.docker.port-mappings", "myApp"),"9090:80");

Stream.builder(scdf).name("myStream").definition("time|log").create().deploy(properties)

公关。感谢 SCDF 团队的帮助


推荐阅读