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 <[email protected]> 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>
