Skip to content

Commit 50c5937

Browse files
Corneil du Plessismarkpollack
Corneil du Plessis
authored andcommitted
Decompose docker-compose files so that depends-on can be used. (spring-attic#4915)
1 parent 8ab2b1e commit 50c5937

7 files changed

+181
-64
lines changed

spring-cloud-dataflow-server/README.adoc

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ The Data Flow Server deploys Streams by delegating to Spring Cloud Skipper and d
55

66
NOTE: The local version of the Data Flow server should only be used for Stream development but can be used in a production environment for Task deployment as a replacement for the Spring Cloud Batch Admin Server.
77

8+
89
== Getting Started
910

1011
This shows how to start the Data Flow Server and Shell to create the `time | log` stream.
@@ -140,6 +141,8 @@ To disable the cloud config server set the `spring.cloud.config.enabled` propert
140141

141142
== Docker-Compose Integration Tests
142143

144+
NOTE: The docker-compose files have been decomposed so that you have to specify the database and messaging engine separately. Previously mysql and kafka was the default.
145+
143146
To run the docker compose integration, enable the `-Pfailsafe` maven profile and the `-Dgroups="docker-compose"` JUnit tag.
144147

145148
. You can run just the integration tests like this:
@@ -153,7 +156,7 @@ SCDF, Skipper servers installed, or the versions Stream and Task apps:
153156

154157
----
155158
./mvnw clean test-compile failsafe:integration-test -pl spring-cloud-dataflow-server -Pfailsafe -Dgroups="docker-compose" \
156-
-Dtest.docker.compose.paths=../src/docker-compose/docker-compose.yml,../src/docker-compose/docker-compose-influxdb.yml,../src/docker-compose/docker-compose-postgres.yml,../src/docker-compose/docker-compose-rabbitmq.yml \
159+
-Dtest.docker.compose.paths="../src/docker-compose/docker-compose.yml,../src/docker-compose/docker-compose-influxdb.yml,../src/docker-compose/docker-compose-postgres.yml,../src/docker-compose/docker-compose-rabbitmq.yml" \
157160
-Dtest.docker.compose.stream.apps.uri=https://dataflow.spring.io/rabbitmq-maven-latest \
158161
-Dtest.docker.compose.dataflow.version=2.8.0-SNAPSHOT \
159162
-Dtest.docker.compose.skipper.version=2.7.0-SNAPSHOT \
@@ -163,7 +166,11 @@ The `test.docker.compose.paths` property accepts comma separated list of docker
163166

164167
----
165168
./mvnw clean test-compile integration-test -pl spring-cloud-dataflow-server -Pfailsafe -Dgroups="docker-compose" \
166-
-Dtest.docker.compose.paths=../src/docker-compose/docker-compose.yml,../src/docker-compose/docker-compose-dood.yml,../src/docker-compose/docker-compose-prometheus.yml \
169+
-Dtest.docker.compose.paths=""../src/docker-compose/docker-compose.yml,\
170+
../src/docker-compose/docker-compose-mysql.yml, \
171+
../src/docker-compose/docker-compose-kafka.yml, \
172+
../src/docker-compose/docker-compose-dood.yml, \
173+
../src/docker-compose/docker-compose-prometheus.yml" \
167174
-Dtest.docker.compose.stream.apps.uri=https://dataflow.spring.io/kafka-docker-latest \
168175
-Dtest.docker.compose.task.apps.uri=https://dataflow.spring.io/task-docker-latest \
169176
-Dtest.docker.compose.dataflow.version=2.8.0-SNAPSHOT \
@@ -186,7 +193,10 @@ Use the `-Dit.test=class-name#method-name` to filter only selected tests.
186193

187194
----
188195
./mvnw clean test-compile integration-test -pl spring-cloud-dataflow-server -Pfailsafe -Dgroups="docker-compose" \
189-
-Dtest.docker.compose.paths=../src/docker-compose/docker-compose.yml,../src/docker-compose/docker-compose-ssl.yml \
196+
-Dtest.docker.compose.paths=""../src/docker-compose/docker-compose.yml,\
197+
../src/docker-compose/docker-compose-mysql.yml, \
198+
../src/docker-compose/docker-compose-kafka.yml, \
199+
../src/docker-compose/docker-compose-ssl.yml" \
190200
-Dtest.docker.compose.dataflow.uri=https://dataflow-server:9393 \
191201
-Dtest.docker.compose.skipper.uri=https://skipper-server:7577 \
192202
-Dtest.docker.compose.waiting.for.service.format=https://$HOST:$EXTERNAL_PORT \
@@ -198,7 +208,10 @@ Use the `-Dit.test=class-name#method-name` to filter only selected tests.
198208

199209
Use the following env. variables to run an IT test from IDE:
200210
----
201-
TEST_DOCKER_COMPOSE_PATHS=../src/docker-compose/docker-compose.yml,../src/docker-compose/docker-compose-ssl.yml
211+
TEST_DOCKER_COMPOSE_PATHS=../src/docker-compose/docker-compose.yml,\
212+
../src/docker-compose/docker-compose-mysql.yml, \
213+
../src/docker-compose/docker-compose-kafka.yml, \
214+
../src/docker-compose/docker-compose-ssl.yml
202215
TEST_DOCKER_COMPOSE_SKIPPER_URI=https://skipper-server:7577
203216
TEST_DOCKER_COMPOSE_DATAFLOW_URI=https://dataflow-server:9393
204217
TEST_DOCKER_COMPOSE_WAITING_FOR_SERVICE_FORMAT=https://$HOST:$EXTERNAL_PORT
@@ -220,7 +233,10 @@ Create HTTPS docker-compose from shell:
220233
----
221234
export DATAFLOW_URI=https://dataflow-server:9393
222235
export SKIPPER_URI=https://skipper-server:7577
223-
docker-compose -f ./src/docker-compose/docker-compose.yml -f ./src/docker-compose/docker-compose-ssl.yml
236+
docker-compose -f ./src/docker-compose/docker-compose.yml \
237+
-f ./src/docker-compose/docker-compose-mysql.yml, \
238+
-f ./src/docker-compose/docker-compose-kafka.yml, \
239+
-f ./src/docker-compose/docker-compose-ssl.yml
224240
----
225241

226242

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
version: '3'
2+
3+
# Configuration environment variables:
4+
# - DATAFLOW_VERSION and SKIPPER_VERSION specify what DataFlow and Skipper image versions to use.
5+
# - STREAM_APPS_URI and TASK_APPS_URI are used to specify what Stream and Task applications to pre-register.
6+
# - HOST_MOUNT_PATH and DOCKER_MOUNT_PATH are used to set the host and docker mount folders.
7+
# If not set HOST_MOUNT_PATH defaults to the local host folder where the docker compose is being started.
8+
# If not set DOCKER_MOUNT_PATH defaults to /home/cnb/scdf on dataflow-server and skipper containers.
9+
# Example to mount the local Maven repository: HOST_MOUNT_PATH=~/.m2 DOCKER_MOUNT_PATH=/home/cnb/.m2 docker-compose up
10+
# - APPS_PORT_RANGE allows you to override the port range exported by the Skipper server. By default the APPS_PORT_RANGE
11+
# must supersede the local deployer's PORTRANGE_LOW and PORTRANGE_HIGH - the ports assigned to the stream apps run inside the Skipper container.
12+
# The stream apps tha run in their own docker containers must set [DOCKER_PORTRANGE_LOW, DOCKER_PORTRANGE_HIGH] range that
13+
# doesn't overlap with the APPS_PORT_RANGE.
14+
#
15+
# Exposed container ports:
16+
# - 9393:9393 - Data Flow server port (http://localhost:9393/dashboard)
17+
# - 7577:7577 - Skipper server port (http://localhost:7577/api)
18+
# - 20000-20105:20000-20105 - Port range for all deployed stream applications that run inside the Skipper container (e.g. maven:// registered apps).
19+
# That means you can reach the application's actuator endpoints from your host machine.
20+
# The deployed stream applications that run in their own docker containers (e.g. docker:// registered apps),
21+
# can be reached on the ports they expose.
22+
services:
23+
24+
kafka-broker:
25+
image: confluentinc/cp-kafka:5.5.2
26+
container_name: dataflow-kafka
27+
expose:
28+
- "9092"
29+
environment:
30+
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka-broker:9092
31+
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
32+
- KAFKA_ADVERTISED_HOST_NAME=kafka-broker
33+
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
34+
- KAFKA_LOG4J_ROOT_LOGLEVEL=ERROR
35+
- KAFKA_LOG4J_LOGGERS=org.apache.zookeeper=ERROR,org.apache.kafka=ERROR,kafka=ERROR,kafka.cluster=ERROR,kafka.controller=ERROR,kafka.coordinator=ERROR,kafka.log=ERROR,kafka.server=ERROR,kafka.zookeeper=ERROR,state.change.logger=ERROR
36+
depends_on:
37+
- zookeeper
38+
39+
zookeeper:
40+
image: confluentinc/cp-zookeeper:5.5.2
41+
container_name: dataflow-kafka-zookeeper
42+
expose:
43+
- "2181"
44+
environment:
45+
- ZOOKEEPER_CLIENT_PORT=2181
46+
47+
dataflow-server:
48+
environment:
49+
- SPRING_CLOUD_DATAFLOW_APPLICATIONPROPERTIES_STREAM_SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS=PLAINTEXT://kafka-broker:9092
50+
- SPRING_CLOUD_DATAFLOW_APPLICATIONPROPERTIES_STREAM_SPRING_CLOUD_STREAM_KAFKA_STREAMS_BINDER_BROKERS=PLAINTEXT://kafka-broker:9092
51+
- SPRING_CLOUD_DATAFLOW_APPLICATIONPROPERTIES_STREAM_SPRING_CLOUD_STREAM_KAFKA_BINDER_ZKNODES=zookeeper:2181
52+
- SPRING_CLOUD_DATAFLOW_APPLICATIONPROPERTIES_STREAM_SPRING_CLOUD_STREAM_KAFKA_STREAMS_BINDER_ZKNODES=zookeeper:2181
53+
54+
- SPRING_CLOUD_DATAFLOW_APPLICATIONPROPERTIES_STREAM_SPRING_KAFKA_STREAMS_PROPERTIES_METRICS_RECORDING_LEVEL=DEBUG
55+
depends_on:
56+
- kafka-broker
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
version: '3'
2+
3+
# Configuration environment variables:
4+
# - DATAFLOW_VERSION and SKIPPER_VERSION specify what DataFlow and Skipper image versions to use.
5+
# - STREAM_APPS_URI and TASK_APPS_URI are used to specify what Stream and Task applications to pre-register.
6+
# - HOST_MOUNT_PATH and DOCKER_MOUNT_PATH are used to set the host and docker mount folders.
7+
# If not set HOST_MOUNT_PATH defaults to the local host folder where the docker compose is being started.
8+
# If not set DOCKER_MOUNT_PATH defaults to /home/cnb/scdf on dataflow-server and skipper containers.
9+
# Example to mount the local Maven repository: HOST_MOUNT_PATH=~/.m2 DOCKER_MOUNT_PATH=/home/cnb/.m2 docker-compose up
10+
# - APPS_PORT_RANGE allows you to override the port range exported by the Skipper server. By default the APPS_PORT_RANGE
11+
# must supersede the local deployer's PORTRANGE_LOW and PORTRANGE_HIGH - the ports assigned to the stream apps run inside the Skipper container.
12+
# The stream apps tha run in their own docker containers must set [DOCKER_PORTRANGE_LOW, DOCKER_PORTRANGE_HIGH] range that
13+
# doesn't overlap with the APPS_PORT_RANGE.
14+
#
15+
# Exposed container ports:
16+
# - 9393:9393 - Data Flow server port (http://localhost:9393/dashboard)
17+
# - 7577:7577 - Skipper server port (http://localhost:7577/api)
18+
# - 20000-20105:20000-20105 - Port range for all deployed stream applications that run inside the Skipper container (e.g. maven:// registered apps).
19+
# That means you can reach the application's actuator endpoints from your host machine.
20+
# The deployed stream applications that run in their own docker containers (e.g. docker:// registered apps),
21+
# can be reached on the ports they expose.
22+
services:
23+
mariadb:
24+
image: mariadb:10.4.22
25+
container_name: dataflow-mariadb
26+
environment:
27+
MARIADB_DATABASE: dataflow
28+
MARIADB_ROOT_PASSWORD: rootpw
29+
expose:
30+
- 3306
31+
32+
dataflow-server:
33+
environment:
34+
- SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/dataflow
35+
- SPRING_DATASOURCE_USERNAME=root
36+
- SPRING_DATASOURCE_PASSWORD=rootpw
37+
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
38+
depends_on:
39+
- mariadb
40+
41+
skipper-server:
42+
environment:
43+
- SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/dataflow
44+
- SPRING_DATASOURCE_USERNAME=root
45+
- SPRING_DATASOURCE_PASSWORD=rootpw
46+
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
47+
depends_on:
48+
- mariadb
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
version: '3'
2+
3+
# Configuration environment variables:
4+
# - DATAFLOW_VERSION and SKIPPER_VERSION specify what DataFlow and Skipper image versions to use.
5+
# - STREAM_APPS_URI and TASK_APPS_URI are used to specify what Stream and Task applications to pre-register.
6+
# - HOST_MOUNT_PATH and DOCKER_MOUNT_PATH are used to set the host and docker mount folders.
7+
# If not set HOST_MOUNT_PATH defaults to the local host folder where the docker compose is being started.
8+
# If not set DOCKER_MOUNT_PATH defaults to /home/cnb/scdf on dataflow-server and skipper containers.
9+
# Example to mount the local Maven repository: HOST_MOUNT_PATH=~/.m2 DOCKER_MOUNT_PATH=/home/cnb/.m2 docker-compose up
10+
# - APPS_PORT_RANGE allows you to override the port range exported by the Skipper server. By default the APPS_PORT_RANGE
11+
# must supersede the local deployer's PORTRANGE_LOW and PORTRANGE_HIGH - the ports assigned to the stream apps run inside the Skipper container.
12+
# The stream apps tha run in their own docker containers must set [DOCKER_PORTRANGE_LOW, DOCKER_PORTRANGE_HIGH] range that
13+
# doesn't overlap with the APPS_PORT_RANGE.
14+
#
15+
# Exposed container ports:
16+
# - 9393:9393 - Data Flow server port (http://localhost:9393/dashboard)
17+
# - 7577:7577 - Skipper server port (http://localhost:7577/api)
18+
# - 20000-20105:20000-20105 - Port range for all deployed stream applications that run inside the Skipper container (e.g. maven:// registered apps).
19+
# That means you can reach the application's actuator endpoints from your host machine.
20+
# The deployed stream applications that run in their own docker containers (e.g. docker:// registered apps),
21+
# can be reached on the ports they expose.
22+
services:
23+
mysql:
24+
image: mysql:5.7.25
25+
container_name: dataflow-mysql
26+
environment:
27+
MYSQL_DATABASE: dataflow
28+
MYSQL_USER: root
29+
MYSQL_ROOT_PASSWORD: rootpw
30+
expose:
31+
- 3306
32+
33+
dataflow-server:
34+
environment:
35+
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/dataflow
36+
- SPRING_DATASOURCE_USERNAME=root
37+
- SPRING_DATASOURCE_PASSWORD=rootpw
38+
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
39+
depends_on:
40+
- mysql
41+
42+
skipper-server:
43+
environment:
44+
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/dataflow
45+
- SPRING_DATASOURCE_USERNAME=root
46+
- SPRING_DATASOURCE_PASSWORD=rootpw
47+
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
48+
depends_on:
49+
- mysql

src/docker-compose/docker-compose-postgres.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ version: '3'
44
# Usage: docker-compose -f ./docker-compose.yml -f ./docker-compose-postgres.yml up
55
services:
66

7-
mariadb:
8-
entrypoint: ["echo", "MariaDB service is disabled"]
9-
107
postgres:
118
image: postgres:10
129
command: postgres -c 'max_connections=300'
@@ -27,11 +24,13 @@ services:
2724
- SPRING_DATASOURCE_USERNAME=root
2825
- SPRING_DATASOURCE_PASSWORD=rootpw
2926
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
30-
27+
depends_on:
28+
- postgres
3129
skipper-server:
3230
environment:
3331
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/dataflow
3432
- SPRING_DATASOURCE_USERNAME=root
3533
- SPRING_DATASOURCE_PASSWORD=rootpw
3634
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
37-
35+
depends_on:
36+
- postgres

src/docker-compose/docker-compose-rabbitmq.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ services:
1919
dataflow-server:
2020
environment:
2121
- SPRING_CLOUD_DATAFLOW_APPLICATIONPROPERTIES_STREAM_SPRING_RABBITMQ_HOST=rabbitmq
22+
depends_on:
23+
- rabbitmq
2224

2325
app-import-stream:
2426
command: >

src/docker-compose/docker-compose.yml

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -20,38 +20,6 @@ version: '3'
2020
# The deployed stream applications that run in their own docker containers (e.g. docker:// registered apps),
2121
# can be reached on the ports they expose.
2222
services:
23-
mariadb:
24-
image: mariadb:10.4.22
25-
container_name: dataflow-mariadb
26-
environment:
27-
MARIADB_DATABASE: dataflow
28-
MARIADB_ROOT_PASSWORD: rootpw
29-
expose:
30-
- 3306
31-
32-
kafka-broker:
33-
image: confluentinc/cp-kafka:5.5.2
34-
container_name: dataflow-kafka
35-
expose:
36-
- "9092"
37-
environment:
38-
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka-broker:9092
39-
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
40-
- KAFKA_ADVERTISED_HOST_NAME=kafka-broker
41-
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
42-
- KAFKA_LOG4J_ROOT_LOGLEVEL=ERROR
43-
- KAFKA_LOG4J_LOGGERS=org.apache.zookeeper=ERROR,org.apache.kafka=ERROR,kafka=ERROR,kafka.cluster=ERROR,kafka.controller=ERROR,kafka.coordinator=ERROR,kafka.log=ERROR,kafka.server=ERROR,kafka.zookeeper=ERROR,state.change.logger=ERROR
44-
depends_on:
45-
- zookeeper
46-
47-
zookeeper:
48-
image: confluentinc/cp-zookeeper:5.5.2
49-
container_name: dataflow-kafka-zookeeper
50-
expose:
51-
- "2181"
52-
environment:
53-
- ZOOKEEPER_CLIENT_PORT=2181
54-
5523
dataflow-server:
5624
user: root
5725
image: springcloud/spring-cloud-dataflow-server:${DATAFLOW_VERSION:-2.10.0-SNAPSHOT}${BP_JVM_VERSION:-}
@@ -70,25 +38,14 @@ services:
7038

7139
- SPRING_CLOUD_SKIPPER_CLIENT_SERVER_URI=${SKIPPER_URI:-http://skipper-server:7577}/api
7240

73-
- SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/dataflow
74-
- SPRING_DATASOURCE_USERNAME=root
75-
- SPRING_DATASOURCE_PASSWORD=rootpw
76-
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
7741
# (Optionally) authenticate the default Docker Hub access for the App Metadata access.
7842
- SPRING_CLOUD_DATAFLOW_CONTAINER_REGISTRY_CONFIGURATIONS_DEFAULT_USER=${METADATA_DEFAULT_DOCKERHUB_USER}
7943
- SPRING_CLOUD_DATAFLOW_CONTAINER_REGISTRY_CONFIGURATIONS_DEFAULT_SECRET=${METADATA_DEFAULT_DOCKERHUB_PASSWORD}
8044

8145
- SPRING_CLOUD_DATAFLOW_CONTAINER_REGISTRYCONFIGURATIONS_DEFAULT_USER=${METADATA_DEFAULT_DOCKERHUB_USER}
8246
- SPRING_CLOUD_DATAFLOW_CONTAINER_REGISTRYCONFIGURATIONS_DEFAULT_SECRET=${METADATA_DEFAULT_DOCKERHUB_PASSWORD}
8347
depends_on:
84-
- kafka-broker
8548
- skipper-server
86-
entrypoint: >
87-
/bin/sh -c "
88-
apt-get update && apt-get install --no-install-recommends -y wget &&
89-
wget --no-check-certificate -P /tmp/ https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh &&
90-
chmod a+x /tmp/wait-for-it.sh &&
91-
/tmp/wait-for-it.sh mariadb:3306 -- /cnb/process/web"
9249
restart: always
9350
volumes:
9451
- ${HOST_MOUNT_PATH:-.}:${DOCKER_MOUNT_PATH:-/home/cnb/scdf}
@@ -128,17 +85,7 @@ services:
12885
environment:
12986
- SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_LOCAL_ACCOUNTS_DEFAULT_PORTRANGE_LOW=20000
13087
- SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_LOCAL_ACCOUNTS_DEFAULT_PORTRANGE_HIGH=20190
131-
- SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/dataflow
132-
- SPRING_DATASOURCE_USERNAME=root
133-
- SPRING_DATASOURCE_PASSWORD=rootpw
134-
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
13588
- LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_CLOUD_SKIPPER_SERVER_DEPLOYER=ERROR
136-
entrypoint: >
137-
/bin/sh -c "
138-
apt-get update && apt-get install --no-install-recommends -y wget &&
139-
wget --no-check-certificate -P /tmp/ https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh &&
140-
chmod a+x /tmp/wait-for-it.sh &&
141-
/tmp/wait-for-it.sh mariadb:3306 -- /cnb/process/web"
14289
restart: always
14390
volumes:
144-
- ${HOST_MOUNT_PATH:-.}:${DOCKER_MOUNT_PATH:-/home/cnb/scdf}
91+
- ${HOST_MOUNT_PATH:-.}:${DOCKER_MOUNT_PATH:-/home/cnb/scdf}

0 commit comments

Comments
 (0)