自定义 Docker Compose
Docker Compose 安装指南介绍了如何使用 docker-compose.yml 安装 Data Flow
、Skipper
、Kafka
和 MariaDB
。您可以借助提供的扩展 docker-compose 文件来扩展此基本配置。例如,如果您想使用 RabbitMQ
、PostgreSQL
并使用 InfluxDB
启用 Data Flow 进行监控
,则可以组合一些提供的 docker-compose 扩展文件
docker-compose -f ./docker-compose.yml \
-f ./docker-compose-rabbitmq.yml \
-f ./docker-compose-postgres.yml \
-f ./docker-compose-influxdb.yml up
docker-compose -f .\docker-compose.yml -f .\docker-compose-rabbitmq.yml -f .\docker-compose-postgres.yml -f .\docker-compose-influxdb.yml up
以下部分详细介绍了提供的扩展 docker-compose 文件,您可以在 docker-compose.yml
的基础上应用这些文件。当您使用多个 docker-compose 文件时,它们将按照其定义的顺序应用。
Prometheus 和 Grafana
docker-compose-prometheus.yml 文件扩展了 docker-compose.yml
中的默认配置,以启用使用 Prometheus 和 Grafana 进行流和任务监控
wget -O docker-compose-prometheus.yml https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-prometheus.yml
docker-compose -f ./docker-compose.yml -f ./docker-compose-prometheus.yml up
curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-prometheus.yml -o docker-compose-prometheus.yml
docker-compose -f .\docker-compose.yml -f .\docker-compose-prometheus.yml up
除了基本服务外,扩展配置还添加了 Prometheus
和 Prometheus-RSocket-Proxy
用于服务发现,并添加了带有预构建流和任务仪表板的 Grafana
。
docker-compose-prometheus.yml
配置将以下容器端口暴露给主机:
主机端口 | 容器端口 | 描述 |
---|---|---|
9090 | 9090 | Prometheus 服务器端口。使用它可以在 https://127.0.0.1:9090 访问 Prometheus Web 控制台 |
3000 | 3000 | Grafana 服务器端口。使用它可以访问 Grafana 仪表板 https://127.0.0.1:3000 |
9096 | 9096 | Prometheus RSocket 代理(Spring Boot)服务器端口 |
7001 | 7001 | Prometheus RSocket 代理 TCP 接受端口。您可以将流和任务应用程序配置为使用此端口向代理报告其指标。 |
8086 | 8086 | Prometheus RSocket 代理 WebSocket 端口。您可以将流和任务应用程序配置为使用此端口向代理报告其指标。 |
docker-compose-prometheus.yml
文件需要现有的 Docker 镜像(springcloud/spring-cloud-dataflow-prometheus-local
和 springcloud/spring-cloud-dataflow-grafana-prometheus
),其标签与配置的 DATAFLOW_VERSION
值匹配。
InfluxDB 和 Grafana
docker-compose-influxdb.yml 启用使用 InfluxDB
和 Grafana
进行流和任务监控,并提供预构建的流和任务仪表板
wget -O docker-compose-influxdb.yml https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-influxdb.yml
docker-compose -f ./docker-compose.yml -f ./docker-compose-influxdb.yml up
curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-influxdb.yml -o docker-compose-influxdb.yml
docker-compose -f .\docker-compose.yml -f .\docker-compose-influxdb.yml up
docker-compose-influxdb.yml
配置将以下容器端口暴露给主机:
主机端口 | 容器端口 | 描述 |
---|---|---|
8086 | 8086 | Influx DB 服务器端口。使用 https://127.0.0.1:8086 连接到 Influx DB。 |
3000 | 3000 | Grafana 服务器端口。使用它可以访问 Grafana 仪表板 https://127.0.0.1:3000。 |
docker-compose-influxdb.yml
需要一个现有的 Docker 镜像(springcloud/spring-cloud-dataflow-grafana-influxdb
),其标签与配置的 DATAFLOW_VERSION
值匹配。
Wavefront
docker-compose-wavefront.yml 启用使用 Wavefront
进行流和任务监控,并提供预构建的流和任务仪表板。
Wavefront 是一种 SaaS 产品,您需要先创建一个用户帐户,并使用该帐户设置 WAVEFRONT_KEY
和 WAVEFRONT_URI
环境变量,如本节后面所述。
wget -O docker-compose-wavefront.yml https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-wavefront.yml
docker-compose -f ./docker-compose.yml -f ./docker-compose-wavefront.yml up
curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-wavefront.yml -o docker-compose-wavefront.yml
docker-compose -f .\docker-compose.yml -f .\docker-compose-wavefront.yml up
您可以使用以下环境变量来配置 docker-compose-wavefront.yml
变量名称 | 默认值 | 描述 |
---|---|---|
WAVEFRONT_KEY |
(必填) | Wavefront 用户 API 密钥 |
WAVEFRONT_URI |
https://vmware.wavefront.com | Wavefront 入口 URI |
WAVEFRONT_SOURCE |
scdf-docker-compose | 此数据流安装中指标的 Wavefront 唯一标识符。 |
您可以使用 Wavefront 的“浏览/来源”菜单查找来自 WAVEFRONT_SOURCE
来源的指标。
Zipkin 服务器
docker-compose-zipkin.yml 启用流式分布式跟踪收集和使用 Zipkin 服务器
进行可视化。在 https://127.0.0.1:9411/zipkin 打开 Zipkin 的 UI,以查找从已部署的流应用程序收集的分布式跟踪。
所有 Spring Cloud 流应用程序 都预先配置了 Spring Cloud Sleuth
,以支持消息分布式跟踪。跟踪信息被发送到外部系统以可视化延迟。Spring Cloud Sleuth 支持 OpenZipkin 兼容系统,例如 Zipkin 服务器 或 Wavefront 分布式跟踪。
默认情况下,Zipkin 分布式跟踪处于禁用状态。使用 spring sleuth 属性 可以更改默认行为。例如,docker-compose-zipkin.yaml
利用 SCDF 通用流属性为已部署的流应用程序设置 spring.zipkin.enabled=true
和 spring.zipkin.base-url=http://zipkin-server:9411
。
wget -O docker-compose-zipkin.yml https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-zipkin.yml
docker-compose -f ./docker-compose.yml -f ./docker-compose-zipkin.yml up
curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-zipkin.yml -o docker-compose-zipkin.yml
docker-compose -f .\docker-compose.yml -f .\docker-compose-zipkin.yml up
docker-compose-zipkin.yml
配置将以下容器端口暴露给主机:
主机端口 | 容器端口 | 描述 |
---|---|---|
9411 | 9411 | Zipkin 服务器监听 HTTP API 和 Web UI 的端口 |
您可以在 https://127.0.0.1:9411/zipkin 使用 Zipkin UI
浏览从已部署的流应用程序收集的分布式跟踪。
使用 Postgres 替换 MariaDB
docker-compose-postgres.yml 文件配置为对 Spring Cloud Data Flow 和 SKipper 使用 PostgreSQL
而不是 MariaDB
。它禁用了默认的 mariadb
服务,添加了一个新的 postgres
服务,并覆盖了 Data Flow 和 Skipper 配置以使用 postgres
服务。
wget -O docker-compose-postgres.yml https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-postgres.yml
docker-compose -f ./docker-compose.yml -f ./docker-compose-postgres.yml up
curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-postgres.yml -o docker-compose-postgres.yml
docker-compose -f .\docker-compose.yml -f .\docker-compose-postgres.yml up
docker-compose-postgres.yml
配置将以下容器端口暴露给主机:
主机端口 | 容器端口 | 描述 |
---|---|---|
5432 | 5432 | PostgreSql 数据库服务器端口。使用 jdbc:postgresql://127.0.0.1:5432/dataflow 从本地机器连接到数据库。 |
使用 RabbitMQ 代替 Kafka
docker-compose-rabbitmq.yml 配置文件将 RabbitMQ(而不是 Kafka)配置为消息代理。它禁用了默认的 kafka
和 zookeeper
服务,添加了一个新的 rabbitmq
服务,并将 dataflow-server
的服务绑定器配置覆盖为 RabbitMQ(例如,spring.cloud.dataflow.applicationProperties.stream.spring.rabbitmq.host=rabbitmq
)。最后,它覆盖了 app-import
服务以注册 RabbitMQ 应用程序。
wget -O docker-compose-rabbitmq.yml https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-rabbitmq.yml
docker-compose -f ./docker-compose.yml -f ./docker-compose-rabbitmq.yml up
curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-rabbitmq.yml -o docker-compose-rabbitmq.yml
docker-compose -f .\docker-compose.yml -f .\docker-compose-rabbitmq.yml up
调试
以下部分介绍如何调试 DataFlow(或 Skipper)服务器以及它们部署的流应用程序。
如果此处显示的调试配置无法运行,请使用本地机器的 IP
地址而不是 localhost
名称。
调试流应用程序
部署流以调试流应用程序时,请将应用程序部署属性(deployer.20000 - 20105
范围内的值。您可以直接从部署 UI 面板执行此操作。以下示例将 debugPort
设置为 20075
。

在 IDE 中打开流应用程序项目。然后通过将 Host:
设置为本地机器的 IP 地址并将 Port:
设置为上面部署属性中使用的值来配置远程调试配置。

您必须使用 IP 地址而不是 localhost
。
调试 Data Flow 服务器
docker-compose-debug-dataflow.yml 文件启用了 Data Flow 服务器的远程调试。要启用调试,请运行:
wget -O docker-compose-debug-dataflow.yml https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-debug-dataflow.yml
docker-compose -f ./docker-compose.yml -f ./docker-compose-debug-dataflow.yml up
curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-debug-dataflow.yml -o docker-compose-debug-dataflow.yml
docker-compose -f .\docker-compose.yml -f .\docker-compose-debug-dataflow.yml up
dataflow-server
服务等待调试器连接到端口 5005
以开始调试。以下屏幕截图显示了如何使用 IntelliJ 配置远程调试。使用本地机器的 IP 地址设置 Host:
。不要使用 localhost
,因为它在 Docker 容器内不起作用。

通常,在调试时,您需要构建一个新的本地 spring-cloud-dataflow-server:latest
Docker 镜像。您可以通过从 DataFlow 根目录运行以下命令来实现:
./mvnw clean install -DskipTests
./mvnw docker:build -pl spring-cloud-dataflow-server
调试 Skipper 服务器
同样,您可以使用 docker-compose-debug-skipper.yml 文件来启用 Skipper 服务器的远程调试。
wget -O docker-compose-debug-skipper.yml https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-debug-skipper.yml
docker-compose -f ./docker-compose.yml -f ./docker-compose-debug-skipper.yml up
curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/main/src/docker-compose/docker-compose-debug-skipper.yml -o docker-compose-debug-skipper.yml
docker-compose -f .\docker-compose.yml -f .\docker-compose-debug-skipper.yml up
skipper
服务会在端口 6006
上等待调试器连接。
集成测试
自文档化的 DataFlowIT.java 类演示了如何重用相同的 docker-compose 文件来构建 DataFlow 集成和冒烟测试。