You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2019/07/03 11:31:16 UTC
[servicecomb-pack] 02/03: Add sh-compatible wait-for to support
startup order
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git
commit 519bce56a48efb1dcc743483d24ad568d89ec81c
Author: Daniel Qian <ch...@gmail.com>
AuthorDate: Mon Jul 1 20:19:16 2019 +0800
Add sh-compatible wait-for to support startup order
---
demo/saga-dubbo-demo/docker-compose-alpha.yaml | 11 +----------
demo/saga-dubbo-demo/docker-compose.mysql.yaml | 20 +++++++++----------
demo/saga-dubbo-demo/docker-compose.yaml | 20 +++++++++----------
demo/saga-servicecomb-demo/docker-compose.yaml | 22 ++++++++++-----------
.../docker-compose-alpha-perf.yaml | 17 ++--------------
demo/saga-spring-demo/docker-compose-alpha.yaml | 11 +----------
demo/saga-spring-demo/docker-compose.mysql.yaml | 8 +++-----
demo/saga-spring-demo/docker-compose.yaml | 18 ++++++++---------
demo/tcc-spring-demo/docker-compose-alpha.yaml | 11 +----------
demo/tcc-spring-demo/docker-compose-demo.yaml | 2 ++
demo/tcc-spring-demo/docker-compose.mysql.yaml | 8 +++-----
demo/tcc-spring-demo/docker-compose.yaml | 16 ++++++---------
docker-build-config/assembly/assembly.xml | 8 ++++++++
docker-build-config/docker-entrypoint.sh | 23 ++++++++++++++++++++++
docker-build-config/pom.xml | 6 +++++-
15 files changed, 94 insertions(+), 107 deletions(-)
diff --git a/demo/saga-dubbo-demo/docker-compose-alpha.yaml b/demo/saga-dubbo-demo/docker-compose-alpha.yaml
index 6041c38..de4b5cd 100644
--- a/demo/saga-dubbo-demo/docker-compose-alpha.yaml
+++ b/demo/saga-dubbo-demo/docker-compose-alpha.yaml
@@ -25,11 +25,6 @@ services:
- POSTGRES_DB=saga
- POSTGRES_USER=saga
- POSTGRES_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -38,10 +33,6 @@ services:
- "database:postgresql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150
depends_on:
- database
diff --git a/demo/saga-dubbo-demo/docker-compose.mysql.yaml b/demo/saga-dubbo-demo/docker-compose.mysql.yaml
index e4d515e..92620e8 100644
--- a/demo/saga-dubbo-demo/docker-compose.mysql.yaml
+++ b/demo/saga-dubbo-demo/docker-compose.mysql.yaml
@@ -34,11 +34,6 @@ services:
- MYSQL_DATABASE=saga
- MYSQL_USER=saga
- MYSQL_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 3306 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -50,11 +45,7 @@ services:
- "database:mysql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=mysql
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150
depends_on:
- database
@@ -74,9 +65,12 @@ services:
-Dserver.port=8071
-Dalpha.cluster.address=alpha-server.servicecomb.io:8080
-Dspring.datasource.initialization-mode=always
+ - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
ports:
- "8071:8071"
depends_on:
+ - database
+ - zookeeper
- alpha
serviceb:
@@ -95,9 +89,12 @@ services:
-Dserver.port=8072
-Dalpha.cluster.address=alpha-server.servicecomb.io:8080
-Dspring.datasource.initialization-mode=always
+ - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
ports:
- "8072:8072"
depends_on:
+ - database
+ - zookeeper
- alpha
servicec:
@@ -116,8 +113,11 @@ services:
-Dserver.port=8073
-Dalpha.cluster.address=alpha-server.servicecomb.io:8080
-Dspring.datasource.initialization-mode=always
+ - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
ports:
- "8073:8073"
depends_on:
+ - database
+ - zookeeper
- alpha
diff --git a/demo/saga-dubbo-demo/docker-compose.yaml b/demo/saga-dubbo-demo/docker-compose.yaml
index 2529776..5da5997 100644
--- a/demo/saga-dubbo-demo/docker-compose.yaml
+++ b/demo/saga-dubbo-demo/docker-compose.yaml
@@ -34,11 +34,6 @@ services:
- POSTGRES_PASSWORD=password
ports:
- "5432:5432"
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -50,11 +45,7 @@ services:
- "database:postgresql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150
depends_on:
- database
@@ -74,9 +65,12 @@ services:
-Dserver.port=8071
-Dalpha.cluster.address=alpha-server.servicecomb.io:8080
-Dspring.datasource.initialization-mode=always
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
ports:
- "8071:8071"
depends_on:
+ - database
+ - zookeeper
- alpha
serviceb:
@@ -95,9 +89,12 @@ services:
-Dserver.port=8072
-Dalpha.cluster.address=alpha-server.servicecomb.io:8080
-Dspring.datasource.initialization-mode=always
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
ports:
- "8072:8072"
depends_on:
+ - database
+ - zookeeper
- alpha
servicec:
@@ -116,7 +113,10 @@ services:
-Dserver.port=8073
-Dalpha.cluster.address=alpha-server.servicecomb.io:8080
-Dspring.datasource.initialization-mode=always
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
ports:
- "8073:8073"
depends_on:
+ - database
+ - zookeeper
- alpha
diff --git a/demo/saga-servicecomb-demo/docker-compose.yaml b/demo/saga-servicecomb-demo/docker-compose.yaml
index 7450473..a6ef104 100644
--- a/demo/saga-servicecomb-demo/docker-compose.yaml
+++ b/demo/saga-servicecomb-demo/docker-compose.yaml
@@ -25,11 +25,6 @@ services:
- POSTGRES_DB=saga
- POSTGRES_USER=saga
- POSTGRES_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -40,11 +35,7 @@ services:
- "8090:8090"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150
depends_on:
- database
@@ -60,10 +51,13 @@ services:
links:
- "alpha:alpha-server.servicecomb.io"
- "servicecenter:service-center.servicecomb.io"
+ environment:
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150,service-center.servicecomb.io:30100:150
ports:
- "8081:8081"
depends_on:
- alpha
+ - servicecenter
car:
image: "scb-car:${TAG}"
@@ -71,10 +65,13 @@ services:
links:
- "alpha:alpha-server.servicecomb.io"
- "servicecenter:service-center.servicecomb.io"
+ environment:
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150,service-center.servicecomb.io:30100:150
ports:
- "8082:8082"
depends_on:
- alpha
+ - servicecenter
booking:
image: "scb-booking:${TAG}"
@@ -84,9 +81,12 @@ services:
- "hotel:hotel.servicecomb.io"
- "car:car.servicecomb.io"
- "servicecenter:service-center.servicecomb.io"
+ environment:
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150,service-center.servicecomb.io:30100:150,hotel.servicecomb.io:8081:150,car.servicecomb.io:8082:150
ports:
- "8083:8083"
depends_on:
+ - alpha
+ - servicecenter
- hotel
- car
- - servicecenter
diff --git a/demo/saga-spring-demo/docker-compose-alpha-perf.yaml b/demo/saga-spring-demo/docker-compose-alpha-perf.yaml
index 7a1ae2b..8160609 100644
--- a/demo/saga-spring-demo/docker-compose-alpha-perf.yaml
+++ b/demo/saga-spring-demo/docker-compose-alpha-perf.yaml
@@ -25,11 +25,6 @@ services:
- POSTGRES_DB=saga
- POSTGRES_USER=saga
- POSTGRES_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -39,21 +34,13 @@ services:
- "grafana:grafana.servicecomb.io"
environment:
- JAVA_OPTS=-javaagent:/maven/saga/aspectjweaver.jar -Dspring.profiles.active=prd -Dkamon.statsd.hostname=grafana.servicecomb.io -Dkamon.statsd.port=8125 -Dkamon.modules.kamon-annotation.auto-start=yes -Dkamon.modules.kamon-log-reporter.auto-start=yes -Dkamon.modules.kamon-statsd.auto-start=yes
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150,grafana.servicecomb.io:80:150
depends_on:
- database
+ - grafana
grafana:
image: "kamon/grafana_graphite"
hostname: grafana
ports:
- "9081:80"
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 80 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
diff --git a/demo/saga-spring-demo/docker-compose-alpha.yaml b/demo/saga-spring-demo/docker-compose-alpha.yaml
index 6041c38..de4b5cd 100644
--- a/demo/saga-spring-demo/docker-compose-alpha.yaml
+++ b/demo/saga-spring-demo/docker-compose-alpha.yaml
@@ -25,11 +25,6 @@ services:
- POSTGRES_DB=saga
- POSTGRES_USER=saga
- POSTGRES_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -38,10 +33,6 @@ services:
- "database:postgresql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150
depends_on:
- database
diff --git a/demo/saga-spring-demo/docker-compose.mysql.yaml b/demo/saga-spring-demo/docker-compose.mysql.yaml
index 3cc3154..5f631b8 100644
--- a/demo/saga-spring-demo/docker-compose.mysql.yaml
+++ b/demo/saga-spring-demo/docker-compose.mysql.yaml
@@ -26,14 +26,12 @@ services:
- MYSQL_DATABASE=saga
- MYSQL_USER=saga
- MYSQL_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 3306 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
links:
- "database:mysql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=mysql
+ - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150
+ depends_on:
+ - database
diff --git a/demo/saga-spring-demo/docker-compose.yaml b/demo/saga-spring-demo/docker-compose.yaml
index ac70522..bb85390 100644
--- a/demo/saga-spring-demo/docker-compose.yaml
+++ b/demo/saga-spring-demo/docker-compose.yaml
@@ -25,11 +25,6 @@ services:
- POSTGRES_DB=saga
- POSTGRES_USER=saga
- POSTGRES_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -38,11 +33,7 @@ services:
- "database:postgresql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150
depends_on:
- database
@@ -51,6 +42,8 @@ services:
hostname: hotel
links:
- "alpha:alpha-server.servicecomb.io"
+ environment:
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150
ports:
- "8081:8080"
depends_on:
@@ -61,6 +54,8 @@ services:
hostname: car
links:
- "alpha:alpha-server.servicecomb.io"
+ environment:
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150
ports:
- "8082:8080"
depends_on:
@@ -73,8 +68,11 @@ services:
- "alpha:alpha-server.servicecomb.io"
- "hotel:hotel.servicecomb.io"
- "car:car.servicecomb.io"
+ environment:
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150,hotel.servicecomb.io:8080:150,car.servicecomb.io:8080:150
ports:
- "8083:8080"
depends_on:
+ - alpha
- hotel
- car
diff --git a/demo/tcc-spring-demo/docker-compose-alpha.yaml b/demo/tcc-spring-demo/docker-compose-alpha.yaml
index 6041c38..de4b5cd 100644
--- a/demo/tcc-spring-demo/docker-compose-alpha.yaml
+++ b/demo/tcc-spring-demo/docker-compose-alpha.yaml
@@ -25,11 +25,6 @@ services:
- POSTGRES_DB=saga
- POSTGRES_USER=saga
- POSTGRES_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -38,10 +33,6 @@ services:
- "database:postgresql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150
depends_on:
- database
diff --git a/demo/tcc-spring-demo/docker-compose-demo.yaml b/demo/tcc-spring-demo/docker-compose-demo.yaml
index 2c7fe4a..55076b0 100644
--- a/demo/tcc-spring-demo/docker-compose-demo.yaml
+++ b/demo/tcc-spring-demo/docker-compose-demo.yaml
@@ -45,6 +45,8 @@ services:
- "alpha:alpha-server.servicecomb.io"
- "payment:payment.servicecomb.io"
- "inventory:inventory.servicecomb.io"
+ environment:
+ - WAIT_FOR_SERVICES=payment.servicecomb.io:8080:150,inventory.servicecomb.io:8080:150
ports:
- "8083:8080"
depends_on:
diff --git a/demo/tcc-spring-demo/docker-compose.mysql.yaml b/demo/tcc-spring-demo/docker-compose.mysql.yaml
index 3cc3154..5f631b8 100644
--- a/demo/tcc-spring-demo/docker-compose.mysql.yaml
+++ b/demo/tcc-spring-demo/docker-compose.mysql.yaml
@@ -26,14 +26,12 @@ services:
- MYSQL_DATABASE=saga
- MYSQL_USER=saga
- MYSQL_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 3306 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
links:
- "database:mysql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=mysql
+ - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150
+ depends_on:
+ - database
diff --git a/demo/tcc-spring-demo/docker-compose.yaml b/demo/tcc-spring-demo/docker-compose.yaml
index b33be54..21f204d 100644
--- a/demo/tcc-spring-demo/docker-compose.yaml
+++ b/demo/tcc-spring-demo/docker-compose.yaml
@@ -25,11 +25,6 @@ services:
- POSTGRES_DB=saga
- POSTGRES_USER=saga
- POSTGRES_PASSWORD=password
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 5432 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
alpha:
image: "alpha-server:${TAG}"
@@ -38,11 +33,7 @@ services:
- "database:postgresql.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
- healthcheck:
- test: ["CMD-SHELL", "nc -z localhost 8080 &> /dev/null; echo $$?"]
- interval: 30s
- timeout: 10s
- retries: 5
+ - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150
depends_on:
- database
@@ -53,6 +44,7 @@ services:
- "alpha:alpha-server.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150
ports:
- "8081:8080"
depends_on:
@@ -65,6 +57,7 @@ services:
- "alpha:alpha-server.servicecomb.io"
environment:
- JAVA_OPTS=-Dspring.profiles.active=prd
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150
ports:
- "8082:8080"
depends_on:
@@ -77,8 +70,11 @@ services:
- "alpha:alpha-server.servicecomb.io"
- "inventory:inventory.servicecomb.io"
- "payment:payment.servicecomb.io"
+ environment:
+ - WAIT_FOR_SERVICES=alpha-server.servicecomb.io:8080:150,inventory.servicecomb.io:8080:150,payment.servicecomb.io:8080:150
ports:
- "8083:8080"
depends_on:
+ - alpha
- payment
- inventory
diff --git a/docker-build-config/assembly/assembly.xml b/docker-build-config/assembly/assembly.xml
index 1929e0b..e8e6557 100644
--- a/docker-build-config/assembly/assembly.xml
+++ b/docker-build-config/assembly/assembly.xml
@@ -39,4 +39,12 @@
</includes>
</fileSet>
</fileSets>
+ <files>
+ <file>
+ <source>${root.basedir}/docker-build-config/docker-entrypoint.sh</source>
+ <outputDirectory>saga</outputDirectory>
+ <fileMode>0755</fileMode>
+ <filtered>true</filtered>
+ </file>
+ </files>
</assembly>
diff --git a/docker-build-config/docker-entrypoint.sh b/docker-build-config/docker-entrypoint.sh
new file mode 100644
index 0000000..8ccf3eb
--- /dev/null
+++ b/docker-build-config/docker-entrypoint.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+wait_for_services() {
+ for svc in ${WAIT_FOR_SERVICES//,/ }
+ do
+ host=$(printf "%s\n" "$svc"| cut -d : -f 1)
+ port=$(printf "%s\n" "$svc"| cut -d : -f 2)
+ timeout=$(printf "%s\n" "$svc"| cut -d : -f 3)
+ echo "Waiting for service $host:$port(timeout: $timeout seconds) ready"
+ /wait-for $host:$port -t $timeout
+ result=$?
+ if [ $result -eq 0 ] ; then
+ echo "Service $host:$port is ready"
+ else
+ echo "Service $host:$port is not ready"
+ exit 1
+ fi
+ done
+}
+
+wait_for_services
+
+exec java $JAVA_OPTS -jar /maven/saga/${project.artifactId}-${project.version}-exec.jar
diff --git a/docker-build-config/pom.xml b/docker-build-config/pom.xml
index da04fc1..4ef4a11 100644
--- a/docker-build-config/pom.xml
+++ b/docker-build-config/pom.xml
@@ -50,8 +50,12 @@
<descriptor>${root.basedir}/docker-build-config/assembly/assembly.xml
</descriptor>
</assembly>
+ <runCmds>
+ <run>wget -O /wait-for https://raw.githubusercontent.com/eficode/wait-for/master/wait-for</run>
+ <run>chmod +x /wait-for</run>
+ </runCmds>
<entryPoint>
- <shell>java $JAVA_OPTS -jar /maven/saga/${project.artifactId}-${project.version}-exec.jar</shell>
+ <shell>/maven/saga/docker-entrypoint.sh</shell>
</entryPoint>
</build>
</image>