2025-02-28 02:25:05 +03:00

105 lines
2.6 KiB
Docker

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" ]