Building Custom Containers
5 min read
Dengan Jagoan Cloud, proses membuat Docker image milikmu sendiri bisa jadi jauh lebih sederhana. Caranya yaitu dengan membangun image baru berdasarkan image yang sudah ada — dalam hal ini, menggunakan template dasar AlmaLinux 9 yang sudah disediakan oleh platform.
Dengan pendekatan ini, Kamu tidak perlu mengatur semuanya dari nol. Semua konfigurasi dasar yang sudah ada di dalam image “parent” bisa langsung Kamu manfaatkan, dan Kamu hanya perlu menambahkan penyesuaian yang Kamu butuhkan.

Cara paling umum untuk membuat Docker image adalah dengan menyusun sebuah Dockerfile — yaitu sebuah file teks sederhana berisi instruksi-instruksi build yang akan dibaca dan dijalankan oleh Docker daemon secara otomatis.
Compose Dockerfile #
Pertama-tama, buat dulu sebuah file teks kosong — file ini akan menjadi tempat kamu menuliskan semua perintah untuk membangun image, yaitu melalui Dockerfile.
📝 NOTE
Sebelum mulai, pastikan Kamu sudah menginstal Docker CE (Community Edition) versi yang sesuai dengan sistem operasi (OS) yang kamu gunakan.Docker CE ini wajib ada agar kamu bisa menjalankan semua perintah yang akan dijelaskan setelah ini, seperti membangun image, menjalankan container, atau mengunggah image ke registry.
Kemudian ikuti langkah-langkah di bawah. Dalam panduan ini, kita akan membuat untuk WildFly docker custom.
1. Tentukan image dasar:
FROM jelasticdocker/almalinuxbase:latest
Kita pakai image almalinuxbase dari Virtuozzo sebagai fondasi.
2. Tambahkan informasi metadata dan variabel:
LABEL maintainer="Virtuozzo International GmbH." ENV WILDFLY_VERSION=36.0.0.Final ENV ADMIN_USER=admin ENV ADMIN_PASSWORD=admin
Menyimpan versi WildFly yang akan dipakai dan user login ke admin panel.
3. Install Java dan tar:
RUN dnf -y install java-17-openjdk-devel tar && dnf -y update
Karena WildFly butuh Java untuk bisa jalan.
4. Unduh dan ekstrak WildFly ke folder /opt:
RUN cd /opt && curl -LO https://github.com/wildfly/wildfly/releases/download/$WILDFLY_VERSION/wildfly-$WILDFLY_VERSION.tar.gz \
&& tar xf wildfly-${WILDFLY_VERSION}.tar.gz \
&& rm wildfly-${WILDFLY_VERSION}.tar.gz
5. Buat shortcut (symlink) supaya folder WildFly lebih mudah diakses:
RUN ln -s /opt/wildfly-$WILDFLY_VERSION /opt/wildfly
6. Buat file konfigurasi utama WildFly:
RUN echo -en "WILDFLY_SH=/opt/wildfly/bin/standalone.sh\n\ WILDFLY_SERVER_CONFIG=standalone.xml\n\ WILDFLY_CONSOLE_LOG=/var/log/wildfly/console.log\n\ WILDFLY_OPTS=\"-b 0.0.0.0 -bmanagement=0.0.0.0 -Djboss.management.http.port=4949 -Djboss.management.https.port=4848
7. Copy file service WildFly ke SystemD:
RUN cp /opt/wildfly-$WILDFLY_VERSION/bin/systemd/wildfly-standalone.service /etc/systemd/system/wildfly.
8. Aktifkan WildFly sebagai service serta buat user & folder log:
RUN systemctl enable wildfly && mkdir -p /var/log/wildfly && adduser wildfly && \ chown -R wildfly:wildfly /opt/wildfly-$WILDFLY_VERSION /opt/wildfly /var/log/wildfly
9. Buat SSL self-signed untuk admin panel:
RUN cd /opt/wildfly/standalone/configuration && \ keypass=password; keytool -genkeypair -alias serverkey -keyalg RSA -keysize 4096 -validity 7360 \ -keystore application.keystore -keypass $keypass -storepass $keypass -dname "cn=Server Administrator,o=Acme,c=GB" && \ chown wildfly:wildfly application.keystore && \ xmlstarlet ed -L -N s="urn:jboss:domain:community:20.0" -i "s:server/s:management/s:management-interfaces/s:http-interface/s:socket-binding" -t attr -n https -v "management-https" standalone.xml && \ xmlstarlet ed -L -N s="urn:jboss:domain:community:20.0" -i "s:server/s:management/s:management-in
10. Tambahkan user admin untuk WildFly:
RUN /opt/wildfly/bin/add-user.sh --user $ADMIN_USER --password $ADMIN_PASSWORD --silent --enable
11. Ubah link default WildFly agar redirect ke port 4848:
RUN sed -i "s/<a href=\"\/console\">/<a href=\"\/console\" onclick=\"javascript:event.target.port=4848;event.targ
12. Tambahkan locale en_US:
RUN localedef -i en_US -f UTF-8 en_US.UTF-8
13. Buka port yang dibutuhkan WildFly:
EXPOSE 22 80 443 8080 8743 9990 9993 8009 4848 4949
14. Atur perintah default saat container dijalankan:
ENTRYPOINT ["/bin/bash"]
Jangan lupa untuk save semua settings yang sudah di deklarasikan
Add Image to Repository #
Setelah Dockerfile-nya sudah siap, sekarang kamu sudah bisa membangun image WildFly kamu sendiri, lalu mengunggahnya (push) ke repository Docker — baik publik seperti Docker Hub, atau yang private (misalnya registry kamu sendiri di Virtuozzo).
📝 NOTE
Sebelum mulai, pastikan Kamu sudah menginstal Docker CE (Community Edition) versi yang sesuai dengan sistem operasi (OS) yang kamu gunakan.Docker CE ini wajib ada agar kamu bisa menjalankan semua perintah yang akan dijelaskan setelah ini, seperti membangun image, menjalankan container, atau mengunggah image ke registry.
1. Jalankan Perintah Build
sudo docker build -t {image_name} {dockerfile_location}
Penjelasan:
- {image_name} → nama image yang kamu inginkan. Kamu bisa menambahkan tag versi jika mau, contohnya:
examplerepo/wildfly:latest - {dockerfile_location} → lokasi folder tempat Dockerfile berada.
Kalau Dockerfile ada di direktori saat ini, cukup tulis .

2. Kamu seharusnya akan menerima pesan bahwa proses build berhasil, lengkap dengan ID dari image baru kamu. Untuk memastikan image tersebut tersedia di perangkat kamu, kamu bisa meminta daftar semua template lokal dengan perintah:
sudo docker images

3. Terakhir, kamu perlu mengunggah (push) image kamu ke registry dengan perintah berikut: sudo docker push {image_name}
Di sini, {image_name} harus sama persis dengan yang kamu gunakan saat proses build di langkah pertama. Kamu juga akan diminta untuk melakukan konfirmasi kepemilikan akun (dengan memasukkan username, password, dan alamat email yang sesuai) agar proses ini bisa selesai.

Deploy Image #
Begitu image Kamu berhasil disimpan di dalam repository, image tersebut langsung tersedia untuk digunakan di platform dan bisa ditambahkan ke environment melalui Docker board yang sudah terintegrasi di bagian topology wizard dalam dashboard.
Jadi, klik tombol New Environment di bagian atas dashboard, lalu masuk ke tab Custom di jendela wizard yang terbuka, dan klik tombol Select Image.
1. Di sini, Lamu bisa menggunakan tab Search (untuk menambahkan image dari Docker Hub) atau berpindah ke bagian Custom, di mana kamu bisa mengelola image dari berbagai jenis (termasuk image private) dan menyimpan template agar bisa diakses dengan mudah.

Kita akan bahas opsi yang kedua, yaitu melalui bagian Custom. Setelah masuk ke sana, pilih layer environment yang dibutuhkan di sebelah kiri (misalnya Application Servers), lalu klik tombol Add New Image.
2. Di jendela Add New Image yang muncul, masukkan identifier image kamu di kolom Name dengan format berikut:
[{registry_hostname}/]{account_namespace}/{image_name}
Bagian {registry_hostname} bisa dilewati jika kamu menggunakan registry resmi Docker Hub.
Kalau kamu menggunakan repository yang bersifat private, kamu juga perlu mengisi kolom Username dan Password dengan kredensial yang sesuai.

Kami menggunakan repository publik Docker Hub yang ada di Registry Hub pusat, jadi kamu hanya perlu memasukkan nama repository-nya saja dalam format pendek. Klik Add jika sudah siap.
3. Setelah itu, image Kamu akan muncul dalam daftar. Sekarang, image tersebut bisa langsung ditambahkan ke topology hanya dengan sekali klik. Selain itu, template ini juga akan disimpan dan tetap muncul di daftar Custom, jadi kamu bisa dengan mudah menemukannya lagi saat membuat environment berikutnya (selama belum kamu hapus dari daftar).

Selesaikan konfigurasi lainnya secara mandiri (detail mengenai opsi yang tersedia bisa kamu baca di panduan yang sudah disediakan), lalu lanjutkan hingga proses pembuatan environment selesai.
4. Begitu environment dengan image yang sesuai sudah muncul di dashboard, Kamu bisa mengaksesnya lewat tombol Open in Browser yang tersedia.

📝 NOTE
Kalau Kamu tidak menempatkan template kamu di layer Application Servers atau Balancing, Kamu perlu menggunakan tombol Open in Browser yang ada di samping container tertentu untuk membukanya.
Hasilnya, kamu akan melihat halaman awal (start page) default dari WildFly, yang menandakan bahwa semuanya telah dikonfigurasi dengan benar dan container yang baru kamu buat sudah berjalan dengan baik.

Kamu juga bisa mengakses WildFly admin panel dengan mengklik tautan Administration Console. Gunakan kredensial login yang sudah kamu tentukan di dalam dockerfile (dalam contoh ini: admin/admin). Kami sangat menyarankan untuk segera mengganti kredensial tersebut dengan yang lebih aman.
Dengan cara yang sama, Kamu juga bisa mempersiapkan dan membuat image lain sesuai kebutuhan, lalu menjalankannya dengan mudah di dalam platform!
Powered by BetterDocs
