BAB IV IMPLEMENTASI DAN PENGUJIAN
4.2 Konfigurasi Docker
4.2.5 Instalasi Container Web Server menggunakan Dockerfile
Dockerfile adalah salah satu kelebihan yang diberikan oleh Docker. Dengan adanya dockerfile user sangat dimudahkan karena hanya dengan satu file, user dapat membuat sebuah image dengan konfigurasi yang diinginkan. Jadi user tidak perlu lagi masuk kedalam mode interactive (tty) suatu container untuk melakukan konfigurasi sistem. Format penulisan script dockerfile adalah:
# Comment
INSTRUCTION Arguments
Script dockerfile memiliki beberapa instruksi dengan penjelesan sebagai berikut:
a. FROM
Intruskti ini menginisialisasi sebuah stage baru dengan settingan sebuah base image sebagai sub-instruksi. Sebuah dockerfile yang valid harus dimulai dengan FROM. Image yang digunakan bisa image yang sudah valid dan tersedia di repositori atau menggunakan local image di system.
b. RUN
Instruksi ini akan meng-eksekusi setiap perintah yang ada diatas image yang sedang digunakan (currently). Jadi setiap proses RUN yang dijalankan akan langsung disimpan kedalam image, lalu perintah selanjutnya yg ada di dockerfile akan menjalankan image hasil commit intruksi RUN tadi. Gunakan \ (backslash) untuk melanjutkan sebuah intruksi ke baris selanjutnya.
Contoh Instruksi: RUN apt-get update \ apt-get -y install apache2 c. CMD
Dalam dockerfile hanya boleh ada satu CMD instruksi. Jika lebih, maka CMD terakhirlah yang akan berjalan. CMD sendiri mempunyai fungsi mengatur default command untuk container. Set default bisa berupa executable command atau tanpa executable command, hanya saja non-executable harus menambahkan instruksi ENTRYPOINT. Dan jika ingin menjalankan executable yang sama setiap saat, user lebih baik menggunakan ENTRYPOINT.
d. ENTRYPOINT
ENTRYPOINT mengizinkan user untuk mengkonfigurasi container yang akan berjalan sebagai executable. Sebagai contoh: ENTRYPOINT ["/usr/sbin/apache2ctl"] yang mana saat container dijalankan, ENTRYPOINT juga kan menjalankan Apache. Untuk berjalan secara foreground, bisa ditambahkan parameter ke-dua atau gunakan CMD untuk foreground.
e. ADD
Instruksi ini bertujuan untuk menyalin file, direktori atau remote file dari <src> dan menambahkannya ke dalam filesystem dari image <dest>. f. EXPOSE
Instruksi EXPOSE akan membuat container mem-publish port spesifik saat dijalankan. EXPOSE belum tentu membuat port container bisa di akses oleh host. Untuk itu, saat docker run harus menggunakan –p flag.
Instruksi diatas merupakan instruksi dasar yang harus dimengerti saat membuat dockerfile. Instruksi-instruksi seperti ENV, WORKDIR, USER, ARG, ONBUILD, STOPSIGNAL dan instruksi lainnya digunakan untuk konfigurasi yang lebih kompleks. Untuk instalasi web server standard, sudah cukup dengan instruksi-instruksi yang sudah di deskripsikan tadi.
Berikut langkah-langkah yang perlu dilakukan untuk instalasi web server menggunakan dockerfile:
1. Download sebuah website template yang akan digunakan sebagai template web server dockerfile.
Template ini nantinya akan digunakan sebagai template default website hasil dari instalasi web server dengan dockerfile.
2. Masuk ke terminal, lalu buat sebuah direktori dengan nama “tugasakhir”. Didalam direktori ini akan disimpan website template dan juga dockerfile. Salin direktori website tadi kedalam direktori tugasakhir.
Gambar 4. 42 Pembuatan direktori dan Salin Website Template Perintah yang digunakan untuk menyalin seluruh isi dalam suatu direktori adalah $ cp dengan –rf flag.
3. Selanjutnya gunakan editor seperti gedit atau Sublime Text untuk membuat sebuah dockerfile didalam direktori tugasakhir.
Gambar 4. 43 Konfigurasi Dockerfile dengan editor Sublime Text Pada gambar diatas, dockerfile diberi instruksi yang penjelasannya sebagai berikut:
a. FROM oghuzima/webserver2:testing
Instruksi ini bertujuan untuk menggunakan image oghuzima/ webserver2:testing sebagai base image dockerfile. Image webserver2:testing sudah terinstall apache2 dan sudah diatur konfigurasi apache, jadi di dockerfile sudah tidak perlu melakukan instalasi apache2.
b. ADD websitetest/ /var/www/
Instruksi ADD akan menyalin direktori websitetest yang ada didalam direktori tugasakhir ke dalam ./var/www/ milik filesystem image dockerfile.
c. RUN chgrp dan RUN chmod
Instruksi RUN tersebut digunakan untuk memberikan file permission agar direktori dan file di /var/www/ bisa diakses (read and write).
d. ADD apache-config.conf /etc/apache2/sites-available/000-default.conf
Instruksi ini akan menyalin file apache-config.conf yang ada di direktori tugasakhir ke 000-default.conf di filesystem image dockerfile.
e. EXPOSE 80
Instruksi untuk membuka port 80 untuk web server agar bisa diakses dari host dan client.
Instruksi ini akan membuat executable service apache2 untuk dijalankan disetiap container dijalankan.
g. CMD [“-D”, “FOREGROUND”]
Instruksi CMD akan membuat settingan default untuk command container –D FOREGROUND, sehingga container berjalan di foreground dan tidak bisa di attach ke tty.
4. Berikut isi file apache-config.conf yang ada di direktori tugasakhir.
Gambar 4. 44 File konfigurasi apache-config.conf
Pada gambar diatas, konfigurasi apache masih sama seperti pada gambar 4.35, dengan akses control mengizinkan setiap request yang masuk.
5. Selanjutnya buka kembali terminal dan masuk ke direktori tugaskahir, lalu gunakan perintah docker build untuk membuat image dari dockerfile yang dibuat tadi.
Gambar 4. 45 Build image dari Dockerfile
Perintah pada gambar diatas digunakan untuk membuat image dari dockerfile yang ada di dalam direktori tugasakhir. Fungsi –t flag itu untuk menyatakan name:tag dari image tersebut. Dan tanda titik (.) di akhir perintah docker build menunjukkan bahwa path dockerfile ada di direktori tersebut. Ada delapan langkah yang terjadi saat proses build itu adalah pengerjaan instruksi yang ada di dockerfile, dan setiap instruksi selesai dijalankan, akan langsung di commit ke image-nya. 6. Setelah itu lakukan perintah docker run seperti gambar 4.28 dengan
image yang digunakan ialah hasil dari dockerfile tadi.
Gambar 4. 46 Docker Run dan Docker ps
Perintah docker run diatas menjalankan image dockerfile tadi dengan publish port ke port 8000. Lalu setelah running, cek container dengan
perintah docker ps yang berfungsi untuk melihat container yang sedang berjalan.
7. Setelah container running, akses via web browser menggunakan url ip_server:8000.
Gambar 4. 47 Test Website container tugasakhirweb
Dari gambar diatas terlihat url yang digunakan adalah 172.28.1.101: 8000. IP Address 172.28.1.101 merupakan alamat dari host docker (server docker), sedangkan 8000 ialah port dari host yang menjadi publish port 80 container tugasakhirweb.
8. Itulah langkah-langkah dalam instalasi container web server menggunakan dockerfile.