From beafa3fe67f63c1da62946f993109d428119a5ae Mon Sep 17 00:00:00 2001 From: Antoine Rey Date: Thu, 21 Oct 2021 08:41:09 +0200 Subject: [PATCH 1/4] Use Github Actions for CI --- .github/workflows/maven-build.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/maven-build.yml diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml new file mode 100644 index 000000000..b2099fb2a --- /dev/null +++ b/.github/workflows/maven-build.yml @@ -0,0 +1,26 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Java CI with Maven + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + cache: maven + - name: Build with Maven + run: mvn -B package --file pom.xml From 94b7a157e90d78554888d794d438e8ee89dcb9b2 Mon Sep 17 00:00:00 2001 From: Antoine Rey Date: Tue, 22 Aug 2023 20:11:15 +0200 Subject: [PATCH 2/4] #219 Upgrade to docker-compose v3 --- docker-compose.yml | 52 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c06448582..5aac9ac5f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,17 +1,23 @@ -version: '2' +version: '3' services: config-server: image: springcommunity/spring-petclinic-config-server container_name: config-server - mem_limit: 512M + deploy: + resources: + limits: + memory: 512M ports: - 8888:8888 discovery-server: image: springcommunity/spring-petclinic-discovery-server container_name: discovery-server - mem_limit: 512M + deploy: + resources: + limits: + memory: 512M depends_on: - config-server entrypoint: ["./dockerize","-wait=tcp://config-server:8888","-timeout=60s","--","java", "org.springframework.boot.loader.JarLauncher"] @@ -21,7 +27,10 @@ services: customers-service: image: springcommunity/spring-petclinic-customers-service container_name: customers-service - mem_limit: 512M + deploy: + resources: + limits: + memory: 512M depends_on: - config-server - discovery-server @@ -32,7 +41,10 @@ services: visits-service: image: springcommunity/spring-petclinic-visits-service container_name: visits-service - mem_limit: 512M + deploy: + resources: + limits: + memory: 512M depends_on: - config-server - discovery-server @@ -43,7 +55,10 @@ services: vets-service: image: springcommunity/spring-petclinic-vets-service container_name: vets-service - mem_limit: 512M + deploy: + resources: + limits: + memory: 512M depends_on: - config-server - discovery-server @@ -54,7 +69,10 @@ services: api-gateway: image: springcommunity/spring-petclinic-api-gateway container_name: api-gateway - mem_limit: 512M + deploy: + resources: + limits: + memory: 512M depends_on: - config-server - discovery-server @@ -65,7 +83,10 @@ services: tracing-server: image: openzipkin/zipkin container_name: tracing-server - mem_limit: 512M + deploy: + resources: + limits: + memory: 512M environment: - JAVA_OPTS=-XX:+UnlockExperimentalVMOptions -Djava.security.egd=file:/dev/./urandom ports: @@ -74,7 +95,10 @@ services: admin-server: image: springcommunity/spring-petclinic-admin-server container_name: admin-server - mem_limit: 512M + deploy: + resources: + limits: + memory: 512M depends_on: - config-server - discovery-server @@ -87,13 +111,19 @@ services: grafana-server: build: ./docker/grafana container_name: grafana-server - mem_limit: 256M + deploy: + resources: + limits: + memory: 256M ports: - 3000:3000 prometheus-server: build: ./docker/prometheus container_name: prometheus-server - mem_limit: 256M + deploy: + resources: + limits: + memory: 256M ports: - 9091:9090 From e4915e674b6026a005bc2d8cb05fd3452c306b5b Mon Sep 17 00:00:00 2001 From: Antoine Rey Date: Wed, 20 Sep 2023 22:00:10 +0200 Subject: [PATCH 3/4] #219 Remove dockerize from the Dockerfile and add some healthcheck and depends_on to the docker-compose.yml --- docker-compose.yml | 49 ++++++++++++++++++++++++++++++---------------- docker/Dockerfile | 10 ---------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 5aac9ac5f..49ab25958 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,11 @@ services: resources: limits: memory: 512M + healthcheck: + test: ["CMD", "curl", "-I", "http://config-server:8888"] + interval: 5s + timeout: 5s + retries: 10 ports: - 8888:8888 @@ -18,9 +23,14 @@ services: resources: limits: memory: 512M + healthcheck: + test: ["CMD", "curl", "-f", "http://discovery-server:8761"] + interval: 5s + timeout: 3s + retries: 10 depends_on: - - config-server - entrypoint: ["./dockerize","-wait=tcp://config-server:8888","-timeout=60s","--","java", "org.springframework.boot.loader.JarLauncher"] + config-server: + condition: service_healthy ports: - 8761:8761 @@ -32,9 +42,10 @@ services: limits: memory: 512M depends_on: - - config-server - - discovery-server - entrypoint: ["./dockerize","-wait=tcp://discovery-server:8761","-timeout=60s","--","java", "org.springframework.boot.loader.JarLauncher"] + config-server: + condition: service_healthy + discovery-server: + condition: service_healthy ports: - 8081:8081 @@ -46,9 +57,10 @@ services: limits: memory: 512M depends_on: - - config-server - - discovery-server - entrypoint: ["./dockerize","-wait=tcp://discovery-server:8761","-timeout=60s","--","java", "org.springframework.boot.loader.JarLauncher"] + config-server: + condition: service_healthy + discovery-server: + condition: service_healthy ports: - 8082:8082 @@ -60,9 +72,10 @@ services: limits: memory: 512M depends_on: - - config-server - - discovery-server - entrypoint: ["./dockerize","-wait=tcp://discovery-server:8761","-timeout=60s","--","java", "org.springframework.boot.loader.JarLauncher"] + config-server: + condition: service_healthy + discovery-server: + condition: service_healthy ports: - 8083:8083 @@ -74,9 +87,10 @@ services: limits: memory: 512M depends_on: - - config-server - - discovery-server - entrypoint: ["./dockerize","-wait=tcp://discovery-server:8761","-timeout=60s","--","java", "org.springframework.boot.loader.JarLauncher"] + config-server: + condition: service_healthy + discovery-server: + condition: service_healthy ports: - 8080:8080 @@ -100,9 +114,10 @@ services: limits: memory: 512M depends_on: - - config-server - - discovery-server - entrypoint: ["./dockerize","-wait=tcp://discovery-server:8761","-timeout=60s","--","java", "org.springframework.boot.loader.JarLauncher"] + config-server: + condition: service_healthy + discovery-server: + condition: service_healthy ports: - 9090:9090 diff --git a/docker/Dockerfile b/docker/Dockerfile index be157c33f..b9f789b63 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,20 +4,10 @@ ARG ARTIFACT_NAME COPY ${ARTIFACT_NAME}.jar application.jar RUN java -Djarmode=layertools -jar application.jar extract -# Download dockerize and cache that layer -ARG DOCKERIZE_VERSION -RUN wget -O dockerize.tar.gz https://github.com/jwilder/dockerize/releases/download/${DOCKERIZE_VERSION}/dockerize-alpine-linux-amd64-${DOCKERIZE_VERSION}.tar.gz -RUN tar xzf dockerize.tar.gz -RUN chmod +x dockerize - FROM eclipse-temurin:17 - WORKDIR application -# Dockerize -COPY --from=builder application/dockerize ./ - ARG EXPOSED_PORT EXPOSE ${EXPOSED_PORT} From c064115ba1cfa38cd679773d974ebec92f40fd34 Mon Sep 17 00:00:00 2001 From: Antoine Rey Date: Sun, 24 Dec 2023 09:55:38 +0100 Subject: [PATCH 4/4] #219 Complete Dockerize removal --- README.md | 3 ++- pom.xml | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 231a89005..c40425c10 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,8 @@ Alternatively you can also build all the images on Podman, which requires Podman Once images are ready, you can start them with a single command `docker-compose up` or `podman-compose up`. -Containers startup order is coordinated with [`dockerize` script](https://github.com/jwilder/dockerize). +Containers startup order is coordinated with the `service_healthy` condition of the Docker Compose [depends-on](https://github.com/compose-spec/compose-spec/blob/master/spec.md#depends_on) expression +and the [healthcheck](https://github.com/compose-spec/compose-spec/blob/master/spec.md#healthcheck) of the service containers. After starting services, it takes a while for API Gateway to be in sync with service registry, so don't be scared of initial Spring Cloud Gateway timeouts. You can track services availability using Eureka dashboard available by default at http://localhost:8761. diff --git a/pom.xml b/pom.xml index 0a0ad34e6..2481f4849 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,6 @@ springcommunity 9090 ${basedir} - v0.6.1 docker @@ -153,8 +152,6 @@ ARTIFACT_NAME=${project.build.finalName} --build-arg EXPOSED_PORT=${docker.image.exposed.port} - --build-arg - DOCKERIZE_VERSION=${docker.image.dockerize.version} -t ${docker.image.prefix}/${project.artifactId} ${project.build.directory}