Skip to content
Snippets Groups Projects
Select Git revision
  • main
  • y1
2 results

Dockerfile

Blame
  • Dockerfile 2.27 KiB
    FROM maven:3.8.1-jdk-11 as builder
    WORKDIR /code
    
    COPY pom.xml /code/pom.xml
    # this does not seem to work as expected RUN mvn -Pprod,dev,api-docs dependency:resolve-plugins dependency:go-offline -B
    # https://github.com/qaware/go-offline-maven-plugin proposes an alternative that seems to work better, but not perfectly as there are two dependencies taht I need to download manually
    RUN \
        mvn -DgroupId=org.glassfish.jaxb -DartifactId=jaxb-runtime -Dversion=2.3.3 dependency:get && \ 
        mvn -DgroupId=org.jboss.logging -DartifactId=jboss-logging -Dversion=3.4.1.Final dependency:get && \
        mvn -Pprod,api-docs de.qaware.maven:go-offline-maven-plugin:resolve-dependencies -B 
    
    COPY package.json /code/package.json
    COPY package-lock.json /code/package-lock.json
    RUN \
        mvn -o -DnodeVersion=v14.17.6 -DnpmVersion=7.23.0 -Pprod,api-docs com.github.eirslett:frontend-maven-plugin:install-node-and-npm  com.github.eirslett:frontend-maven-plugin:npm -Dmaven.test.skip=true  
    
    COPY webpack /code/webpack
    COPY src/main/webapp /code/src/main/webapp
    COPY tsconfig* /code/
    COPY *.* /code/
    COPY .* /code/
    # https://pkg.go.dev/path/filepath#Match
    
    RUN mvn -o generate-resources -Pprod,api-docs -Dmaven.test.skip=true
    
    COPY [^Dockerfile]* /code/
    # copy all except docker file 
    COPY src/main /code/src/main
    COPY src /code/src
    # copy remaining content on main and src
    
    # https://github.com/eirslett/frontend-maven-plugin#skipping-execution
    RUN mvn -o package spring-boot:repackage -Pprod,api-docs -DskipTests  -Dskip.npm -Dskip.yarn -Dskip.bower -Dskip.grunt -Dskip.gulp -Dskip.jspm -Dskip.karma -Dskip.webpack && \
        mv ./target/*.jar /frontend.jar
    
    FROM adoptopenjdk:11-jre-hotspot
    ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
        JAVA_OPTS="-Xmx512m -Xms256m" \
        JHIPSTER_SLEEP=0 \
        RUN_PROFILE=prod,api-docs,webapp
    
    EXPOSE 8080
    
    ARG EXTRA_CA_URL
    RUN /bin/bash -c "[ -z $EXTRA_CA_URL ] || ( curl -s $EXTRA_CA_URL --output /ca.pem && keytool -import -noprompt -trustcacerts -alias ca -file /ca.pem -cacerts -storepass changeit )"
    # to check if ca is installed keytool -list -cacerts -alias ca --storepass changeit
    
    COPY --from=builder /frontend.jar .    
    CMD echo "The frontend will start in ${JHIPSTER_SLEEP}s..." && \
        sleep $JHIPSTER_SLEEP && \
        java $JAVA_OPTS -Dspring.profiles.active=$RUN_PROFILE -jar /frontend.jar