Kita akan membuat image docker dari aplikasi java. Kemudian akan kita jalankan container dari image docker yang dibuat tadi. Tools yang digunakan untuk mendockerkan aplikasi java ini adalah podman. Sistem operasi yang digunakan adalah Linux Fedora 31. Pada percobaan ini dibutuhkan jaringan internet untuk mengambil base image OPEN-JDK.
Kita akan menggunakan aplikasi REST camel yang dicontohkan di artikel REST Server Menggunakan Apache Camel. Source codenya dapat diambil di GitHub ini. Yang diperlukan di sini adalah file jar hasil kompilasi source code. File yang dihasilkannya adalah RestCamelContoh-0.0.1-SNAPSHOT.jar.
Pastikan file jar ini dapat dijalankan menggunakan command berikut:
java -jar -Dspring.profiles.active=default RestCamelContoh-0.0.1-SNAPSHOT.jar
Buat sebuah direktori kosong untuk menyimpan file jar tadi. Dalam contoh ini nama direktorinya adalah dockerJava. Kemudian buat sebuah file text dengan nama Dockerfile. Isi Dockerfile ini adalah:
#Gunakan Base Image: Alpine Linux dengan OPENJDK JRE
FROM openjdk:8-jre-alpine
# Copy file App.jar ke dalam direktori /
COPY RestCamelContoh-0.0.1-SNAPSHOT.jar /RestCamelContoh-0.0.1-SNAPSHOT.jar
# Jalankan aplikasi dengan command line di bawah:
# java -jar -Dspring.profiles.active=default /RestCamelContoh-0.0.1-SNAPSHOT.jar
CMD ["java", "-jar", "-Dspring.profiles.active=default","/RestCamelContoh-0.0.1-SNAPSHOT.jar"]
Syarat untuk membuat docker image adalah dengan membuat file Dockerfile ini saja. File ini isinya adalah perintah yang harus dikerjakan oleh podman ketika membuat image docker. Pastikan file jar dan Dockerfile ini berada di dalam direktori yang sama seperti ini:
Selanjutnya kita akan buat image docker menggunakan podman. Sebelumnya pastikan podman sudah terinstall dalam host kita.
[uing@localhost dockerJava]$ podman --version
podman version 1.6.2
[uing@localhost dockerJava]$
Kemudian buat image docker menggunakan perintah ini:
[uing@localhost dockerJava]$ podman build -t rest-aplikasi-java-podman .
STEP 1: FROM openjdk:8-jre-alpine
STEP 2: COPY RestCamelContoh-0.0.1-SNAPSHOT.jar /RestCamelContoh-0.0.1-SNAPSHOT.jar
581585703c19ae603e6daffcdcc7422906230c5d1fb88a3c60b157a32559daba
STEP 3: CMD ["java", "-jar", "-Dspring.profiles.active=default","/RestCamelContoh-0.0.1-SNAPSHOT.jar"]
STEP 4: COMMIT rest-aplikasi-java-podman
15e389b1bb7fa839db3cbd6e88e02c7d668b0262601b466457ea01fff223704e
[uing@localhost dockerJava]$
Pastikan di ujung command di atas ditambahkan titik seperti contoh di atas. Titik ini menunjukkan kepada podman bahwa file Dockerfile berada di dalam direktori dimana kita berada saat ini.
Selanjutnya lihat image yang sudah kita buat menggunakan command:
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$ podman image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/rest-aplikasi-java-podman latest 15e389b1bb7f About a minute ago 109 MB
docker.io/library/openjdk 8-jre-alpine f7a292bbb70c 6 months ago 86.1 MB
[uing@localhost dockerJava]$
Nampak di atas sudah terbentuk image docker baru yang kita buat tadi dengan nama localhost/rest-aplikasi-java-podman.
Sekarang kita jalankan container docker berdasarkan image yang baru kita buat tadi menggunakan command berikut:
podman run -p 8881:8881 localhost/rest-aplikasi-java-podman:latest
Nampak di atas container sudah berhasil dijalankan. Untuk memastikannya bisa dilihat daftar container apa saja yang saat ini sedang berjalan dengan command berikut:
uing@localhost ~]$
[uing@localhost ~]$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
931def6c8661 localhost/rest-aplikasi-java-podman:latest java -jar -Dsprin... 3 minutes ago Up 3 minutes ago 0.0.0.0:8881->8881/tcp awesome_archimedes
[uing@localhost ~]$
Sekarang kita coba mengakses service yang dijalankan oleh aplikasi java dalam container tersebut menggunakan postman.
Demikian pembuatan image docker dan menjalankan container dari aplikasi java. Masih banyak yang harus dieksplorasi dari perintah podman ini. Misalnya menjalankan container sebagai daemon (berjalan di background) sebaiknya menggunakan option -d. Pada contoh di atas perintah menjalankan container tidak dibarengi dengan opsi -d sehingga container berjalan di foreground.
Berikut adalah contoh menjalankan container sebagai daemon sehingga berjalan di background. Untuk menghentikan dockernya perlu menggunakan perintah podman stop.
[uing@localhost ~]$
[uing@localhost dockerJava]$ podman run -d -p 8881:8881 localhost/rest-aplikasi-java-podman:latest
30054fe466673f6be9a1f0cc8ebaeb07d44c4d4a48940eb711f3cefe3cd308c5
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
30054fe46667 localhost/rest-aplikasi-java-podman:latest java -jar -Dsprin... 25 seconds ago Up 25 seconds ago 0.0.0.0:8881->8881/tcp affectionate_torvalds
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$ podman stop 30054fe46667
30054fe466673f6be9a1f0cc8ebaeb07d44c4d4a48940eb711f3cefe3cd308c5
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$
[uing@localhost dockerJava]$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[uing@localhost dockerJava]$
Ketika menjalankan container sebagai daemon:
Menghentikan container yang berjalan sebagai daemon:
Leave a comment