#!/bin/bash prepareDockerfileWithBuild(){ cat << EOF > Dockerfile-${artifactId} # This sample, non-production-ready template describes an Amazon EC2 instance and an Elastic Load Balancer. # © 2020 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. # This AWS Content is provided subject to the terms of the AWS Customer Agreement available at # http://aws.amazon.com/agreement or other written agreement between Customer and either # Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both. FROM 766380763301.dkr.ecr.ap-south-1.amazonaws.com/build/maven:3.3-jdk-8 as BUILD WORKDIR /usr/src/app COPY . /usr/src/app RUN mvn -s sandbox-settings.xml clean install -DskipTests RUN mkdir -p /var/log/${artifactId} && touch /var/log/${artifactId}/gc.log FROM 766380763301.dkr.ecr.ap-south-1.amazonaws.com/build/java:8-jdk-slim-secure_v1.0 ADD https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.15.0/jmx_prometheus_javaagent-0.15.0.jar /opt/jmx_exporter.jar ### Config added through configmap # COPY config.yaml /opt/config.yaml EXPOSE 8880 8010 COPY --from=BUILD /usr/src/app/target/${artifactId}-${version}.jar /opt/target/${artifactId}.jar COPY --from=BUILD /var/log/${artifactId} /var/log/${artifactId} WORKDIR /opt/target CMD ["${artifactId}.jar", "-javaagent:/opt/jmx_exporter.jar=8880:/opt/config/jmx-config.yaml", \ "-XX:MinRAMPercentage=50.0", "-XX:MaxRAMPercentage=80.0", \ "-XX:+UseParallelGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails", \ "-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime", "-XX:+PrintHeapAtGC", \ "-Xloggc:/var/log/${artifactId}/gc.log", \ "-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=9000k", \ "-Xms2G", "-Xmx2G"] EOF } prepareDockerfileNoBuild(){ cat << EOF > Dockerfile-${artifactId} # This sample, non-production-ready template describes an Amazon EC2 instance and an Elastic Load Balancer. # © 2020 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. # This AWS Content is provided subject to the terms of the AWS Customer Agreement available at # http://aws.amazon.com/agreement or other written agreement between Customer and either # Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both. FROM 766380763301.dkr.ecr.ap-south-1.amazonaws.com/build/maven:3.3-jdk-8 as BUILD #FROM asia-southeast1-docker.pkg.dev/supply-poc-351106/homelab-devops/maven:3.3-jdk-8 as BUILD RUN mkdir -p /var/log/${artifactId} && touch /var/log/${artifactId}/gc.log FROM 766380763301.dkr.ecr.ap-south-1.amazonaws.com/build/java:8-jdk-slim-secure_v1.0 #FROM asia-southeast1-docker.pkg.dev/supply-poc-351106/homelab-devops/java:8 ADD https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.15.0/jmx_prometheus_javaagent-0.15.0.jar /opt/jmx_exporter.jar ### Config added through configmap # COPY config.yaml /opt/config.yaml EXPOSE 8880 8010 COPY ${artifactId}/target/*.jar /opt/target/${artifactId}.jar COPY --from=BUILD /var/log/${artifactId} /var/log/${artifactId} WORKDIR /opt/target CMD ["${artifactId}.jar", "-javaagent:/opt/jmx_exporter.jar=8880:/opt/config/jmx-config.yaml", \ "-XX:MinRAMPercentage=50.0", "-XX:MaxRAMPercentage=80.0", \ "-XX:+UseParallelGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails", \ "-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime", "-XX:+PrintHeapAtGC", \ "-Xloggc:/var/log/${artifactId}/gc.log", \ "-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=9000k", \ "-Xms2G", "-Xmx2G"] EOF } main(){ if [[ $# == 4 ]];then export artifactId=$1 export version=$2 export doBuild=$3 export repoName=$4 if [[ $doBuild == "YES" ]];then rm -f Dockerfile-${artifactId} prepareDockerfileWithBuild else rm -f Dockerfile-${artifactId} prepareDockerfileNoBuild fi ls -latr cat Dockerfile-${artifactId} else echo "Please provide required parameters" exit 1 fi } main $@