Как получить доступ к http источнику потока данных весеннего облака в контейнере Docker? - PullRequest
0 голосов
/ 10 мая 2019

Я запустил сервер Spring Cloud Dataflow с предоставленным файлом docker-compose.yaml и определил простой поток: http | log

Теперь я хотел бы отправить некоторые данные в источник http с моего хост-компьютера, но не могу найти правильный адрес и порт сервера.

Я бы хотел

curl -X POST -d 'data to be sent' http://localhost:8080

Что мне нужно использовать для http://localhost:8080, чтобы это работало?

Это мой docker-compose.yaml файл:

version: '3'

services:
  rabbitmq:
    image: rabbitmq:3.7
    expose:
      - "5672"
  zookeeper:
    image: wurstmeister/zookeeper
    expose:
      - "2181"
  dataflow-server:
    image: springcloud/spring-cloud-dataflow-server:${DATAFLOW_VERSION:?DATAFLOW_VERSION is not set!}
    container_name: dataflow-server
    ports:
      - "9393:9393"
    environment:
      - spring.cloud.dataflow.applicationProperties.stream.spring.rabbitmq.host=rabbitmq
      - spring.cloud.skipper.client.serverUri=http://skipper-server:7577/api
      - spring.cloud.dataflow.applicationProperties.stream.management.metrics.export.influx.enabled=true
      - spring.cloud.dataflow.applicationProperties.stream.management.metrics.export.influx.db=myinfluxdb
      - spring.cloud.dataflow.applicationProperties.stream.management.metrics.export.influx.uri=http://influxdb:8086
      - spring.cloud.dataflow.grafana-info.url=http://localhost:3000
    depends_on:
      - rabbitmq
    volumes:
      - /Users/ernst/Temp/scdf:/root/apps
  app-import:
    image: springcloud/openjdk:latest
    depends_on:
      - dataflow-server
    command: >
      /bin/sh -c "
        while ! nc -z dataflow-server 9393;
        do
          sleep 1;
        done;
        wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=http://bitt.ly/Einstein-SR2-stream-applications-rabbit-maven&force=true';
        echo 'Stream apps imported'
        wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=http://bitt.ly/Dearborn-SR1-task-applications-maven&force=true';
        echo 'Task apps imported'"
  skipper-server:
    image: springcloud/spring-cloud-skipper-server:${SKIPPER_VERSION:?SKIPPER_VERSION is not set!}
    container_name: skipper
    ports:
    - "7577:7577"
    - "9000-9010:9000-9010"
    volumes:
      - /Users/ernst/Temp/scdf:/root/apps
  influxdb:
    image: influxdb:1.7.4
    container_name: 'influxdb'
    ports:
      - '8086:8086'

  grafana:
    image: springcloud/spring-cloud-dataflow-grafana-influxdb:${DATAFLOW_VERSION:?DATAFLOW_VERSION is not set!}
    container_name: 'grafana'
    ports:
      - '3000:3000'
volumes:
  scdf-targets:

1 Ответ

0 голосов
/ 10 мая 2019

Java-приложения, которые составляют потоки в Spring Cloud Data Flow, выполняются в контейнере skipper-server, определенном в docker-composer.yaml.

Это означает, что сопоставление портов в разделе Skipper-Server является релевантным:

  skipper-server:
    image: springcloud/spring-cloud-skipper-server:${SKIPPER_VERSION:?SKIPPER_VERSION is not set!}
    container_name: skipper
    ports:
    - "7577:7577"
    - "9000-9010:9000-9010"

Это означает, что порты 7577 и 9000-9010 сопоставлены с портами хоста.

Чтобы источник http не мог выбрать случайный порт, определение потока должно выглядеть следующим образом:

http --server.port=9000 | log

Так что теперь нормально работает следующее:

curl -H "Content-Type: application/json" -X POST -d '{"id":"1","temperature":"100"}' http://localhost:9000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...