• Tidak ada hasil yang ditemukan

Docker Compose. Docker compose berfungsi untuk menjalankan container docker secara bersamaan.

N/A
N/A
Protected

Academic year: 2022

Membagikan "Docker Compose. Docker compose berfungsi untuk menjalankan container docker secara bersamaan."

Copied!
13
0
0

Teks penuh

(1)

Docker Compose

Setelah melakukan instalasi docker engine atau core docker, langkah selanjutnya kita akan melakukan instalasi docker compose, apa itu docker compose?

“Docker compose berfungsi untuk menjalankan container docker secara bersamaan.”

docker compose ini sangat berguna ketika aplikasi kita terpisah - pisah pada komputer yang berbeda, contohnya adalah aplikasi yang dibuat berada pada 1 container sedangkan database yang akan digunakan oleh aplikasi tersebut berada pada container yang lain.

Ketika menggunakan docker compose maka kita dapat menjalankan kedua container tersebut secara bersamaan dan bahkan kita dapat melakukan link ke container yang kita inginkan.

Dockerfile

Jika anda pernah membuat server untuk sebuah website berbasis html atau php, mungkin anda akan melakukan instalasi web server (contoh: nginx) di server dan kemudian memasukan file website anda di directory /var/www/html. Saat ini anda akan migrasi ke container. Lalu

bagaimana caranya membuat supaya container image anda berisi semua file website anda yang ada di directory /var/www/html tersebut? Caranya adalah dengan membuat custom image sendiri menggunakan Dockerfile. Jika sudah terbentuk image, image tersebut bisa anda upload di docker hub untuk kemudian bisa digunakan dimana saja dan ketika anda menjalankan image tersebut, aplikasi anda akan berjalan dan bisa digunakan.

Apa itu Dockerfile?

Dockerfile adalah sebuah file yang digunakan untuk membuat container image. Lalu bagaimana caranya membuat custom image dengan Dockerfile? Ikuti langkah-langkah yang akan kita bahas dibawah.

Apa itu Docker Hub?

Docker Hub merupakan registry tempat penyimpanan docker image. Setelah anda membuat custom image dengan nama yang anda inginkan, selanjutnya adalah anda bisa push image tersebut ke registry, salah satunya Docker Hub. Selanjutnya jika anda ingin menggunakan image tersebut, anda hanya perlu pull image tersebut ke server dari Docker Hub.

Langkah Praktikum

1. Docker compose telah anda install pada praktikum pertama, jika anda lupa buka kembali modul praktikum docker pertama anda.

2. Untuk mulai menggunakan docker compose silahkan jalankan perintah berikut untuk melakukan akses root.

(2)

sudo su

atau sudo -s

3. Selanjutnya ciptakan sebuah directory/folder. Nama folder tersebut terserah anda. Saya menggunakan nama folder: web_dev

mkdir web_dev

4. Masukklah ke directory web_dev tersebut.

cd web_dev

5. Ciptakan sebuah file baru dengan nama file docker-compose dengan extensi file .yml.

Nano docker-compose.yml

6. Isilah file tersebut dengan baris code berikut.

version: '3.3' services:

web:

image: php:7.3-apache container_name: php73 volumes:

- ./php:/var/www/html/

ports:

- 8000:80

7. Ingatlah untuk indentasi yang kita gunakan adalah 2 spasi.

(3)

8. Selanjutnya save file tersebut dan ketikan perintah:

Docker-compose up

9. Jika kita perhatikan, ketika perintah docker-compose up dijalankan maka docker engine akan melakukan pull/download image php dengan tag/versi: 7.3-apache yang terdapat pada docker-hub.

10. Jika docker engine sudah selesai pull/download docker image, maka didalam folder web_dev anda akan melihat sebuah folder baru dengan nama folder: php. folder ini adalah hasil pull dari image php yang telah kita defenisikan pada file docker-compose.yml

11. Selanjutnya kita akan menguji docker compose yang melakukan download image php:7.3-apache dengan menciptakan sebuah file percobaan. Silahkan anda masuk ke folder php tersebut dan ciptakan sebuah file baru dengan nama file index.php dengan mengetikkan perintah:

Nano index.php

12. Isilah file index.php dengan baris code berikut:

(4)

<?php

Echo ‘hello from jansutris’;

?>

13. Ketikkan perintah dibawah ini untuk mundur ke 1 directory sebelumnya (folder: web_dev):

cd ..

14. Jalankan ulang perintah docker-compose up untuk membuild ulang container php dibawah:

15. Silahkan akses browser kesayangan anda dengan memasukkan URL:

http://localhost:8000/

Keterangan:

Port 8000: port number yang anda defenisikan/ diexpose pada file docker-compose.yml agar bisa diakses dari external (dari luar docker-container).

16. Jika anda akses URL diatas, anda akan mendapatkan pesan error seperti ini pada web-page browser anda. Artinya folder/container php yang ada belum dimilki oleh owner/kepemilikan dengan username anda.

17. Solusinya, silahkan anda ubah hak ownership kepada username yang anda gunakan pada os ubuntu anda terhadap folder/container php tersebut.

18. Sebagai contoh, awalnya folder php tersebut dimiliki/ownership oleh user root. Maka anda berikan ownership user jansutris10 terhadap folder php tersebut. Sesuaikan dengan username anda. Dengan mengetikkan perintah:

chown jansutris10:jansutris10 php/ -R

(5)

19. Setelah itu jalankan kembali perintah: docker-compose up dan refresh (F5) web browser anda.

Hasilnya akan seperti ini

20. Mulai saat ini, jika anda ubah kode program anda, baik dari editor ataupun dari command-line dan anda refresh web page tersebut, maka hasilnya akan otomatis berubah pada halaman web.

21. Misalnya, saya ubah “hello from jansutris” menjadi “hello from sitoluama” menggunakan editor nano bawaan dengan membuka terminal kedua, tanpa mematikan terminal yang sedang menjalankan prose docker-compose up (anda juga boleh install visual studio code pada ubuntu anda).

(6)

22. Maka hasilnya akan menjadi seperti ini:

23. Hingga tahap ini anda telah berhasil menjalankan docker image php, kita ketahui Bersama bahwa PHP adalah Bahasa pemrograman yang berhubungan dengan back-end. Selanjutnya saya akan download dan install docker-image mysql untuk support simple website berbasis php-native tersebut

menggunakan dockerfile.

24. Sekarang kita langsung saja mencoba membuat dockerfile untuk membuat suatu image yang berisi container. Sebagai contoh disini saya akan membuat container yang berisi php dan mysqli.

25. Silahkan ciptakan sebuah file dengan nama Dockerfile yang disimpan pada folder php.

26. Isilah file Dockerfile tersebut dengan baris code berikut:

(7)

Keterangan:

Sebelum kita memulai menggunakan dockerfile untuk membuat sebuah container, kita sedikit belajar dulu tentang perintah command yang ada pada dockerfile.

Untuk dockerfile terdapat beberapa perintah yaitu:

1. Dockerfile Commands

• ADD

Perintah ADD digunakan untuk mengcopy file dari suatu direktori ke direktori tujuan.

• Jika direktori asal adalah sebuah URL, perintah add akan mendownloadnya dan menempatkannya ke direktori tujuan.

• CMD

Perintah CMD hampir sama dengan perintah RUN, CMD digunakan untuk mengeksekusi perintah yang lebih spesifik, seperti pada saat proses pembuatan container pada image.

• ENTRYPOINT

ENTRYPOINT adalah argumen untuk mengeset default aplikasi yang digunakan setiap kali sebuah container dibuat menggunakan image.

• ENV

ENV digunakan untuk mengeset environment variables.

• FROM

FROM argument mendefinisikan sebuah base image yang akan digunakan untuk

memulai membangun proses pada setiap docker image apakah itu di repositori ataupun di host kita sendiri.

• WORKDIR

WORKDIR direktif digunakan untuk mengatur di mana perintah didefinisikan dengan CMD yang akan dieksekusi.

• RUN

RUN adalah perintah yang digunakan untuk membangun docker images yang terpusat untuk mengeksekusi Dockerfiles.

• MAINTAINER

MAINTAINER adalah perintah yang tidak dijalankan tetapi di deklarasikan sebagai author field dari images.

(8)

• USER

USER direktif digunakan untuk mengatur UID (atau nama pengguna) yang menjalankan sebuah container berdasarkan dari image yang sedang dibangun.

• VOLUME

Perintah VOLUME digunakan untuk mengaktifkan akses dari kontainer kita ke direktori pada mesin host.

• EXPOSE

Perintah EXPOSE digunakan untuk menghubungkan port tertentu untuk mengaktifkan network antara proses yang berjalan di dalam container dan mesin host.

27. Selanjutnya ubah code docker-compose berikut dengan menambahkan beberapa baris code, seperti berikut ini:

28. Jalankan kembali perintah docker-compose up. Docker engine akan download/pull image docker mysql dengan tag/versi 8.0 dan menciptakan sebuah container dari image tersebut dengan nama mysql8.

(9)

29. Docker engine akan build ulang docker image, container dan ciptakan sebuah database dengan spesifikasi yang didefenisikan pada file: docker-compose.yml

30. Silahkan akses ulang, maka web anda akan tetap bisa diakses:

31. Untuk menguji apakah database dari image mysql:8.0 pada container tersebut sudah berhasil dibuild, silahkan akhiri proses docker-compose dengan menekan CTRL + C.

32. Selanjutnya, edit file index.php anda, seperti baris code sebagai berikut:

<?php

$host = 'db';

$user = 'jansutris';

$password = 'qwertyasdf';

$db = 'test_db';

$conn = new mysqli ($host, $user, $password, $db);

if($conn-> connect_error) {

echo 'connection gagal' . $conn->connect_error;

}

echo 'koneksi database berhasil ke MYSQL';

(10)

?>

Penjelasan:

Hasil dari code ini akan menampilkan pesan “koneksi anda berhail ke MYSQL”, jika database anda terkonseksi dengan file index.php, ditandai dengan: username, password dan nama database nya sesuai antara isi file index.php dan isi file docker-compose.yml. Jika gagal, maka akan menampilkan pesan “conection gagal” diikuti dengan error status nya.

Seperti pada gambar berikut:

33. Sesuaikan dengan pengaturan yang anda defenisikan pada docker-compose.yml.

(11)

34. Tambahkan baris code berikut pada file docker-compose.yml.

Catatan:

Gunakan aturan indentasi dengan 2 spasi!

version: '3.3' services:

web:

build:

context: ./php dockerfile: Dockerfile container_name: php73 depends_on:

- db volumes:

- ./php:/var/www/html/

ports:

- 8000:80 db:

container_name: mysql8 image: mysql:8.0

command: --default-authentication-plugin=mysql_native_password restart: always

environment:

MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: test_db MYSQL_USER: jansutris

MYSQL_PASSWORD: qwertyasdf ports:

- 6033:3306

(12)

35. Jalankan ulang perintah: docker-compose up.

36. Sebagai informasi, jika anda menjalankan docker-compose up. Maka docker engine akan pull/download docker images dan create docker container sesuai dengan spesifikasi pada docker- compose.yml.

37. Terakhir, akseslah/refresh URL: localhost:8000. Jika berhasil maka tampilan pada web browser anda akan seperti gambar dibawah ini.

(13)

Tugas:

1. Silahkan eksplorasi sebanyak-banyaknya tentang docker-compose, aturan membuat YML files dan dockerfile.

2. Silahkan deploy program aplikasi berbasis php-native kesayangan anda/yang anda miliki dengan kombinasi menggunakan docker-compose.yml dan dockerfile seperti pada contoh diatas. Pastikan program aplikasi anda menggunakan database dan berhasil koneksi kedatabase dengan mengujinya menjalankan fungsi CRUD (Create, Read, update dan delete) pada web browser kesayangan anda.

3. Upload/unggah docker-image yang sudah anda build ke docker-registry (docker-hub)

4. Lampirkan jawaban soal 1, soal 2 dan soal 3 yang terdiri dari kode program, output/hasil dan penjelasannya pada laporan praktikum anda

“Truth can only be found in one place: the code.”

― Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship ―

EOF

Referensi

Dokumen terkait

menyimpan segala sesuatu yang diperlukan agar aplikasi dapat berjalan, Setiap container dijalankan dari docker image yang telah ditentukan container dapat

Berikut ini adalah beberapa perintah yang harus Anda jalankan untuk menambahkan repositori Docker:.. Tambahkan

jepang.Docker Container Merupakan sebuah program yang dapat membantu untuk mengembangkan dan menjalankan aplikasi dalam system operasi manapun, docker menyediakan sebuah wadah

Berdasarkan penelitian sebelumnya yang menggunakan metode TAM pada bidang kesehatan yaitu Penerimaan Sistem Pendaftaran Online BPJS Kesehatan Cabang Jember

Perhitungan terhadap rata-rata waktu antar kedatangan dan rata-rata pelayanan pada layanan cek fisik dan layanan pembayaran pajak lima tahunan menggunakan distribusi poisson

Sebenarnya yang paling diperlukan adalah hati yang hancur dan remuk, yaitu datang kepada orang tua dengan mengatakan, “Maafkanlah saya, saya bersalah karena

Tujuan dari penelitian ini adalah untuk merancang dan melakukan pengontrolan pada hardware prototype belt konveyor untuk plant pengemasan Virgin Coconut Oil

Dalam mendeskripsikan seberapa baik kinerja keuangan daerah Kabupaten/Kota di Provinsi Lampung, maka terdapat tiga ukuran penilaian yang digunakan, yakni ukuran kemandiran