Wednesday, September 15, 2021

Contoh Dockerfile Untuk Java 8 dengan Maven

Contoh jika jar sudah di-built

# build from complete compiled spring-boot jar
FROM java:8
RUN mkdir /usr/src/namaProyek
COPY namaProyek-0.0.1-SNAPSHOT.jar /usr/src/namaProyek
WORKDIR /usr/src/namaProyek 

#RUN apt-get update -y
RUN apt-get install -y tzdata

ENV TZ Asia/Jakarta
# standar parameter java. Jika mau memasukkan properties bisa juga di sini dengan -D
ENV JAVA_OPTS="-Xms768m -Xmx1024m -XX:PermSize=768m -XX:MaxPermSize=768m"

# standar argumen java. Di properties biasanya ditandai seperti ini:
# nama.properties=${NILAI_CONFIG:nilaiDefault}
ENV RUN_ARGS="--APP_NAME=namaProyek --APP_PORT=5005"
ENV RUN_ARGS=$RUN_ARGS" --CONFIG_SERVER=http://192.168.1.12:9999 --EUREKA_SERVER=http://192.168.1.12:8003/eureka"
ENV RUN_ARGS=$RUN_ARGS" --DB_URL=jdbc:db2://192.168.1.12:50001/namaDb --DB_USERNAME=db2inst1 --DB_PASSWORD=password --DB_SCHEMA=NAMA_PROYEK"

#Ini cuma untuk debug saja
#CMD echo $(ls -l -a /usr/src/namaProyek)
#CMD echo $(java -version)

#Jalankan Java
CMD java $JAVA_OPTS -jar /usr/src/namaProyek/namaProyek-0.0.1-SNAPSHOT.jar $RUN_ARGS

#Agar port bisa diakses oleh host. Sekedar catatan, tidak berfungsi jika network="host"
EXPOSE 5005
  

Contoh jika jar belum di-built

# build from source code
FROM maven:3.8-jdk-8 AS build
RUN mkdir /usr/src/namaProyek
WORKDIR /usr/src/namaProyek

# salin pom.xml dan source code ke dalam container
COPY pom.xml /usr/src/namaProyek/pom.xml
COPY src /usr/src/namaProyek/src

# sekedar debug, memastikan sudah tersalin ke container
RUN echo $(ls -l -a /usr/src/namaProyek)

#build
RUN mvn -f /usr/src/MS_DigitalWealth/pom.xml clean package


#build sudah selesai, saatnya masukkan hasil jar
FROM java:8
COPY --from=build /usr/src/namaProyek/target/namaProyek-0.0.1-SNAPSHOT.jar /usr/src/namaProyek/target/namaProyek-0.0.1-SNAPSHOT.jar
RUN echo "setelah build package"
RUN echo $(ls -l -a /usr/src/namaProyek)
ENV RUN_ARGS="--DB_URL=jdbc:db2://192.168.1.12:50000/namaDb --DB_USERNAME=db2inst1 --DB_PASSWORD=password"

# Anda bisa pakai CMD seperti pada contoh sebelumnya atau pakai ENTRYPOINT
# jika java tidak ditemukan, maka pakailah CMD. 
ENTRYPOINT /usr/src/namaProyek/target/namaProyek-0.0.1-SNAPSHOT.jar

#Agar port bisa diakses oleh host. Sekedar catatan, tidak berfungsi jika network="host"
EXPOSE 5005
  

0 comments: