Moodle merupakan platform Learning Management System (LMS) open source.

Sampai postingan ini dibuat, moodle tidak memiliki official image di docker hub. maka dari itu kali ini saya akan membagikan cara untuk membuat image moodle dengan Dockerfile.

Dockerfile merupakan salah satu fitur docker yang digunakan untuk membangun sebuah image baru

Membuat direktori kerja baru

Agar tertata dengan rapi kita buat sebuah direktori baru

$ mkdir /home/$USER/moodle-docker
$ cd /home/$USER/moodle-docker

Membuat VirtualHost apache2

Saat membagun image moodle nanti kita akan menginstall apache2 sebagai http server moodle berjalan, maka dari itu kita persiapkan dulu file konfigurasi virtual host untuk moodlenya.

$ nano moodle.conf<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/moodle/
ServerName example.com
ServerAlias www.example.com
<Directory /var/www/html/moodle/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Download app moodle

Pada saat story ini dibuat versi moodle terbaru adalah 3.9

$ wget https://download.moodle.org/download.php/stable39/moodle-latest-39.tgz

Membuat Dockerfile

setelah semua bahan disiapkan, sekarang kita membuat file Dockerfile

$ nano DockerfileFROM ubuntu:latest 

RUN apt-get update -y && \
ln -fs /usr/share/zoneinfo/Asia/Jakarta /etc/localtime

RUN apt-get install apache2 -y

RUN apt-get install php libapache2-mod-php -y

RUN apt-get -y install graphviz aspell ghostscript clamav php7.4-pspell php7.4-curl php7.4-gd php7.4-intl \
php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-ldap php7.4-zip php7.4-soap php7.4-mbstring

ADD moodle-latest-39.tgz /var/www/html/

RUN mkdir /var/www/html/moodledata

RUN chown -R www-data:www-data /var/www/html/moodle/ && \
chmod -R 755 /var/www/html/moodle/ && \
chown www-data /var/www/html/moodledata

COPY moodle.conf /etc/apache2/sites-available/

RUN a2enmod rewrite && \
a2ensite moodle.conf && \
a2dissite 000-default.conf

RUN service apache2 restart

EXPOSE 80

CMD ["apachectl","-D","FOREGROUND"]

List direktori

Pastikan isi dari direktori /home/$USER/moodle seperti ini

$ tree
.
├── Dockerfile
├── moodle.conf
└── moodle-latest-39.tgz

Build image dari Dockerfile

Untuk dapat build image pastikan docker daemon telah terinstall di host kalian

$ docker build -t prasta/moodle:latest .

Disini saya menggunakan tag prasta/moodle:latest dikarenakan akan saya push ke registry docker milik saya

Pastikan image berhasil di buat, check image yang ada di local host

$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
prasta/moodle latest 4725719476d3 44 hours ago 760MB

Push image ke registry

Agar dapat push image ke registry docker hub, pertama kita harus terlebih dahulu menggunakan perintah $ docker login , setelah itu kita dapat push image dengan perintah

$ docker push prasta/moodle:latest

Membangun/Deploy container dari moodle image

Untuk lankah-langkah dan konfigurasi dari membangun container moodle dapat di lihat pada story dibawah :D