105 lines
2.6 KiB
Docker
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" ]
|