FROM gradle:8.12.1-jdk17 AS dependencies # Disable the Gradle daemon for Continuous Integration servers as correctness # is usually a priority over speed in CI environments. Using a fresh # runtime for each build is more reliable since the runtime is completely # isolated from any previous builds. ARG GRADLE_OPTS= ENV GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.caching=true ${GRADLE_OPTS}" ENV GRADLE_USER_HOME=/home/gradle/gradle-user-home WORKDIR /home/gradle/app COPY ./service/build.gradle ./service/ COPY build.gradle settings.gradle gradle.properties ./ RUN \ gradle downloadDependencies COPY ./service/ ./service/ #COPY ./agent/ ./agent/ ENTRYPOINT [ "gradle" ] FROM dependencies AS test RUN \ gradle testClasses \ && cp --recursive \ /home/gradle/gradle-user-home \ /home/gradle/gradle-user-home-from-cache ENV TZ=Europe/Moscow ENV GRADLE_USER_HOME=/home/gradle/gradle-user-home-from-cache CMD [ "test" ] FROM dependencies AS builder # Parameter org.gradle.parallel improves build time on muti-core processors RUN \ gradle -Dorg.gradle.parallel=true assemble FROM builder AS builder-with-caches RUN \ cp --recursive \ /home/gradle/gradle-user-home \ /home/gradle/gradle-user-home-from-cache ENV GRADLE_USER_HOME=/home/gradle/gradle-user-home-from-cache FROM openjdk:17.0.2-jdk-slim-buster AS package-upgrade COPY ./.package_upgrade / RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive xargs --arg-file=/.package_upgrade \ apt-get install \ --assume-yes \ --no-install-suggests FROM builder-with-caches AS build WORKDIR /app RUN mkdir -p lib config \ && chown -R 20000:20000 . \ && chmod -R 0755 . \ && groupadd --system --gid 20000 app \ && adduser --system --uid 20000 --shell /sbin/nologin --home /app --gid 20000 app ENV TZ=Europe/Moscow ENV SERVER_PORT=8080 ENV MANAGEMENT_SERVER_PORT=8282 ENV MANAGEMENT_ENDPOINTS_WEB_BASEPATH=/actuator ENV JAVA_TOOL_OPTIONS="\ -Dfile.encoding=UTF-8 \ -Djava.security.egd=file:///dev/urandom \ -Dnetworkaddress.cache.ttl=60s \ -XX:MaxRAMPercentage=50" USER app HEALTHCHECK --start-period=60s \ CMD wget --quiet --timeout=1 --output-document=/dev/null \ "http://127.0.0.1:${MANAGEMENT_SERVER_PORT}${MANAGEMENT_ENDPOINTS_WEB_BASEPATH}/health" || exit 1 FROM build AS build-service #COPY --from=builder \ # /home/gradle/app/agent/opentelemetry-javaagent.jar ./agent/opentelemetry-javaagent.jar COPY --chown=app:app --from=builder \ /home/gradle/app/service/build/libs/service.jar ./lib/service.jar EXPOSE ${SERVER_PORT} ENTRYPOINT [ "java", "-jar", "lib/service.jar" ]