# Deploy Moodle dengan Menggunakan Docker

Haloo .. Apa kabar semuanya?

Pada artikel kali ini bertujuan untuk mendeploy sebuah moodle dengan menggunakan docker. Dalam melakukan praktek ini, saya menggunakan sebuah instance di AWS (Amazon Web Services) dengan Sistem Operasinya yaitu Ubuntu 18.04 LTS dan menggunakan PuTTY sebagai aplikasi untuk melakukan remote terhadap instance tersebut.

## Apa itu Moodle?
Modular Object-Oriented Dynamic Learning Environment atau singkatan dari Moodle adalah sebuah platform yang digunakan untuk menunjang sistem manajemen pembelajaran secara online dan menggunakan perangkat komputer. Jadi, apabila anda ingin menciptakan sebuah aplikasi pembelajaran seperti e-learning, maka anda dapat menggunakan Moodle sebagai alternatif pilihan terbaik.

Moodle juga termasuk ke dalam aplikasi berbasis web (web-based). Yang mana, untuk setiap aktivitas pembelajaran terkait akses materi, diskusi, tanya jawab, hingga evaluasi dapat dilakukan melalui tampilan website dengan menggunakan bantuan browser. 

## Apa itu Docker?
Docker adalah layanan yang menyediakan kemampuan untuk mengemas dan menjalankan sebuah aplikasi dalam sebuah lingkungan terisolasi yang disebut dengan container. Dengan adanya isolasi dan keamanan yang memadai memungkinkan kamu untuk menjalankan banyak container di waktu yang bersamaan pada host tertentu.

Atau dengan kata lain docker adalah sebuah software framework untuk membangun, menjalankan, dan mengelola container di server dan cloud. Istilah "docker" dapat merujuk ke alat (perintah dan daemon) atau ke format file Dockerfile.

## Pembahasan
Oke, langsung saja kita ke pembahasan tentang langkah-langkah untuk mendeploy moodle dengan menggunakan Docker


1. Langkah pertama yaitu menginstalasi Docker service
```
sudo apt-get update
sudo apt-get install docker.io
```

      ![1 apt-get update.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645014618100/EGRK3m328.png)

2. Langkah selanjutnya, Membuat sebuah Docker Network
```
sudo docker network create moodle-network
```
    ![2 apt-get install docker io.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645014758718/xK2dfs37h.png)

3. Selanjutnya, mendownload MariaDB docker image dari Repository Online
```
sudo docker pull mariadb
```

    ![4 sudo docker pull mariadb.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645014941344/VhIWQng2Z.png)

4. Mendownload Moodle docker image dari Repository Online
```
sudo docker pull bitnami/moodle
```

    ![5 sudo docker pull bitnami ataumoodle.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015052804/PubZHbAhW.png)

5. Melihat Daftar Docker Images yang terinstall di system
```
sudo docker images
```

    ![6 sudo docker images.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015137214/R3XkZi8wH.png)

6. Membuat Docker Volume ke store MariaDB persistent data
```
sudo docker volume create mariadb-data
```

    ![7 sudo docker volume create mariadb-data.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015231416/R2rRSiBHN8.png)

7. Verifikasi persistent data direktori
```
sudo docker volume inspect mariadb-data
```

    ![8 sudo docker volume inspect mariadb-data.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015290334/T7kbFIcdo.png)

8. Membuat symbolic link untuk mempermudah mengakses lokasi
```
sudo ln -s /var/lib/docker/volumes/mariadb-data/_data /mariadb
```

    ![9 Membuat link untuk mempermudah mengakses lokasi.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015336389/s0a_db_wRV.png)

9. Memulai MariaDB kontainer dengan persistent data storage
```
sudo docker run -d --name moodledb -v mariadb-data:/var/lib/mysql --network moodle network -e "MYSQL_ROOT_PASSWORD=kamisama123" -e MYSQL_USER=moodle -e "MYSQL_PASSWORD=kamisama123" -e "MYSQL_DATABASE=moodle" mariadb
```

    ![10 Memulai MariaDB kontainer dengan persistent data storag.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015427652/L9X3LBQcy.png)

10. Membuat Docker Volume ke store Moodle persistent data
```
sudo docker volume create moodle-data
```

    ![11.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015509254/sqQU3GFOc.png)

11. Verifikasi persistent data Direktori
```
sudo docker volume inspect moodle-data
```

    ![12.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015578329/eiPfSCPNj.png)

12. Membuat link untuk mempermudah mengakses lokasi
```
sudo ln -s /var/lib/docker/volumes/moodle-data/_data /moodle
```
![13.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645016027070/YvxsaKGJ8.png)

13. Memulai Kontainer dengan persistent Data Storage
```
sudo docker run -d --name moodle -p 80:8080 -p 443:8443 -v moodle-data:/bitnami/moodle --network moodle-network -e MOODLE_DATABASE_HOST=moodledb -e MOODLE_DATABASE_USER=moodle -e MOODLE_DATABASE_PASSWORD=kamisama123 -e MOODLE_DATABASE_NAME=moodle bitnami/moodle:latest
```

    ![13b.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015706314/AgE09jkgh.png)

14. Menampilkan semua container yang sedang berjalan
```
sudo docker ps
```

    ![docker ps.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015767750/Dkn2QKqe3.png)

15. Selanjutnya Buka browser dan masukkan IP Addressnya, lalu masukan Username dan 
Passwordnya

    ![berhasil1.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015812707/O68HH80Ns.png)

16. Jika berhasil login, maka tampilan awalnya akan terlihat seperti gambar berikut ini

    ![berhasil2.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015861560/Wbug2MOHo.png)

17. Mendeploy Moodle dengan Menggunakan Docker pun berhasil

    ![berhasil3.PNG](https://cdn.hashnode.com/res/hashnode/image/upload/v1645015895926/9Sr0ezVNR.png)

Terima kasih, semoga artikel ini bisa dijadikan contoh dan semoga bermanfaat! Sampai jumpa lagi di artikel selanjutnya 👋

Referensi : 
[Apa Itu Docker?](https://wartaekonomi.co.id/read378759/apa-itu-docker)
[Apa Itu Docker? Apa Kegunaan dan Kelebihannya?](https://www.dicoding.com/blog/apa-itu-docker/)
[Panduan Lengkap Menggunakan Moodle untuk Pemula](https://www.sekawanmedia.co.id/blog/pengertian-moodle/)
