Dockerfile 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # syntax=docker/dockerfile:1.4
  2. FROM --platform=$BUILDPLATFORM maven:3.8.5-eclipse-temurin-17@sha256:a554849fd74b733acb76379bd7df0ea26635a48ab9b54ede1e94bbeaaf448cf6 AS builder
  3. WORKDIR /workdir/server
  4. COPY pom.xml /workdir/server/pom.xml
  5. RUN mvn dependency:go-offline
  6. COPY src /workdir/server/src
  7. RUN mvn install
  8. FROM builder AS dev-envs
  9. RUN <<EOF
  10. apt-get update
  11. apt-get install -y --no-install-recommends git
  12. EOF
  13. RUN <<EOF
  14. useradd -s /bin/bash -m vscode
  15. groupadd docker
  16. usermod -aG docker vscode
  17. EOF
  18. # install Docker tools (cli, buildx, compose)
  19. COPY --from=gloursdocker/docker / /
  20. CMD ["mvn", "spring-boot:run"]
  21. FROM builder as prepare-production
  22. RUN mkdir -p target/dependency
  23. WORKDIR /workdir/server/target/dependency
  24. RUN jar -xf ../*.jar
  25. FROM eclipse-temurin:17-jre-focal@sha256:55c1ff40a91898c456dc5a874a66db17b6aa1b4aef8d9cac1ad3b194575638a1
  26. EXPOSE 8080
  27. VOLUME /tmp
  28. ARG DEPENDENCY=/workdir/server/target/dependency
  29. COPY --from=prepare-production ${DEPENDENCY}/BOOT-INF/lib /app/lib
  30. COPY --from=prepare-production ${DEPENDENCY}/META-INF /app/META-INF
  31. COPY --from=prepare-production ${DEPENDENCY}/BOOT-INF/classes /app
  32. ENTRYPOINT ["java","-cp","app:app/lib/*","com.company.project.Application"]