From ad398e45ffe60b4d797ffdf4e85a933deb46db4f Mon Sep 17 00:00:00 2001 From: Maciej Szarlinski <mszarlinski@gmail.com> Date: Fri, 30 Dec 2016 17:01:48 +0100 Subject: [PATCH] Containers startup coordination with wait-for-it.sh --- README.md | 3 ++- docker-compose.yml | 13 +++++++++++++ .../src/main/docker/Dockerfile | 2 ++ .../src/main/docker/Dockerfile | 2 ++ .../src/main/docker/Dockerfile | 2 ++ .../src/main/docker/Dockerfile | 4 +++- .../src/main/docker/Dockerfile | 2 ++ .../src/main/docker/Dockerfile | 2 ++ 8 files changed, 28 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f5afa675..f57b23c7 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,8 @@ You can tell Config Server to use your local Git repository by using `local` Spr ## Starting services locally with docker-compose In order to start entire infrastructure using Docker, you have to build images by executing `mvn clean install -PbuildDocker` from a project root. Once images are ready, you can start them with a single command -`docker-compose up`. After starting services it takes a while for API Gateway to be in sync with service registry, +`docker-compose up`. Containers startup order is coordinated with [`wait-for-it.sh` script](https://github.com/vishnubob/wait-for-it). +After starting services it takes a while for API Gateway to be in sync with service registry, so don't be scared of initial Zuul timeouts. You can track services availability using Eureka dashboard available by default at http://localhost:8761. diff --git a/docker-compose.yml b/docker-compose.yml index 2e9f5da6..b614419c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,53 +2,63 @@ version: '2' services: config-server: image: mszarlinski/spring-petclinic-config-server + container_name: config-server ports: - 8888:8888 discovery-server: image: mszarlinski/spring-petclinic-discovery-server + container_name: discovery-server links: - config-server depends_on: - config-server + entrypoint: ["./wait-for-it.sh","config-server:8888/info","--","java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ports: - 8761:8761 customers-service: image: mszarlinski/spring-petclinic-customers-service + container_name: customers-service links: - config-server - discovery-server depends_on: - config-server - discovery-server + entrypoint: ["./wait-for-it.sh","discovery-server:8761/manage/health","--","java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ports: - 8081:8081 visits-service: image: mszarlinski/spring-petclinic-visits-service + container_name: visits-service links: - config-server - discovery-server depends_on: - config-server - discovery-server + entrypoint: ["./wait-for-it.sh","discovery-server:8761/manage/health","--","java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ports: - 8082:8082 vets-service: image: mszarlinski/spring-petclinic-vets-service + container_name: vets-service links: - config-server - discovery-server depends_on: - config-server - discovery-server + entrypoint: ["./wait-for-it.sh","discovery-server:8761/manage/health","--","java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ports: - 8083:8083 api-gateway: image: mszarlinski/spring-petclinic-api-gateway + container_name: api-gateway links: - config-server - discovery-server @@ -58,16 +68,19 @@ services: depends_on: - config-server - discovery-server + entrypoint: ["./wait-for-it.sh","discovery-server:8761/manage/health","--","java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ports: - 8080:8080 tracing-server: image: mszarlinski/spring-petclinic-tracing-server + container_name: tracing-server links: - config-server - discovery-server depends_on: - config-server - discovery-server + entrypoint: ["./wait-for-it.sh","discovery-server:8761/manage/health","--","java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ports: - 9411:9411 diff --git a/spring-petclinic-api-gateway/src/main/docker/Dockerfile b/spring-petclinic-api-gateway/src/main/docker/Dockerfile index 1e887124..b2261d22 100644 --- a/spring-petclinic-api-gateway/src/main/docker/Dockerfile +++ b/spring-petclinic-api-gateway/src/main/docker/Dockerfile @@ -1,5 +1,7 @@ FROM java:8 VOLUME /tmp +ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh wait-for-it.sh +RUN bash -c 'chmod +x wait-for-it.sh' ADD petclinic.jar /app.jar ENV SPRING_PROFILES_ACTIVE docker RUN bash -c 'touch /app.jar' diff --git a/spring-petclinic-customers-service/src/main/docker/Dockerfile b/spring-petclinic-customers-service/src/main/docker/Dockerfile index 2a03442a..fc0b6ba7 100644 --- a/spring-petclinic-customers-service/src/main/docker/Dockerfile +++ b/spring-petclinic-customers-service/src/main/docker/Dockerfile @@ -1,5 +1,7 @@ FROM java:8 VOLUME /tmp +ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh wait-for-it.sh +RUN bash -c 'chmod +x wait-for-it.sh' ADD spring-petclinic-customers-service-1.4.2.jar /app.jar ENV SPRING_PROFILES_ACTIVE docker RUN bash -c 'touch /app.jar' diff --git a/spring-petclinic-discovery-server/src/main/docker/Dockerfile b/spring-petclinic-discovery-server/src/main/docker/Dockerfile index 23ce4133..069731ad 100644 --- a/spring-petclinic-discovery-server/src/main/docker/Dockerfile +++ b/spring-petclinic-discovery-server/src/main/docker/Dockerfile @@ -1,5 +1,7 @@ FROM java:8 VOLUME /tmp +ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh wait-for-it.sh +RUN bash -c 'chmod +x wait-for-it.sh' ADD spring-petclinic-discovery-server-1.4.2.jar /app.jar ENV SPRING_PROFILES_ACTIVE docker RUN bash -c 'touch /app.jar' diff --git a/spring-petclinic-tracing-server/src/main/docker/Dockerfile b/spring-petclinic-tracing-server/src/main/docker/Dockerfile index 768fc8d9..1820883c 100644 --- a/spring-petclinic-tracing-server/src/main/docker/Dockerfile +++ b/spring-petclinic-tracing-server/src/main/docker/Dockerfile @@ -1,6 +1,8 @@ FROM java:8 VOLUME /tmp -ADD spring-petclinic-tracing-server-1.4.2.jar /app.jar +ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh wait-for-it.sh +RUN bash -c 'chmod +x wait-for-it.sh' +RUN bash -c 'chmod +x wait-for-it.sh' ENV SPRING_PROFILES_ACTIVE docker RUN bash -c 'touch /app.jar' EXPOSE 8081 diff --git a/spring-petclinic-vets-service/src/main/docker/Dockerfile b/spring-petclinic-vets-service/src/main/docker/Dockerfile index 2126b6b0..6fb4095c 100644 --- a/spring-petclinic-vets-service/src/main/docker/Dockerfile +++ b/spring-petclinic-vets-service/src/main/docker/Dockerfile @@ -1,5 +1,7 @@ FROM java:8 VOLUME /tmp +ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh wait-for-it.sh +RUN bash -c 'chmod +x wait-for-it.sh' ADD spring-petclinic-vets-service-1.4.2.jar /app.jar ENV SPRING_PROFILES_ACTIVE docker RUN bash -c 'touch /app.jar' diff --git a/spring-petclinic-visits-service/src/main/docker/Dockerfile b/spring-petclinic-visits-service/src/main/docker/Dockerfile index 9dd6fb0a..58cadb73 100644 --- a/spring-petclinic-visits-service/src/main/docker/Dockerfile +++ b/spring-petclinic-visits-service/src/main/docker/Dockerfile @@ -1,5 +1,7 @@ FROM java:8 VOLUME /tmp +ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh wait-for-it.sh +RUN bash -c 'chmod +x wait-for-it.sh' ADD spring-petclinic-visits-service-1.4.2.jar /app.jar ENV SPRING_PROFILES_ACTIVE docker RUN bash -c 'touch /app.jar' -- GitLab