Halo semuanya kali ini saya akan setup LAMP (Linux Apache MariaDB PHP) menggunakan Docker. Apa itu Docker? Docker adalah platform yang menyediakan kemampuan untuk mengemas aplikasi menjadi sebuah container/image. Keuntungan menggunakan docker yaitu kita tidak perlu repot menyamakan environment seperti sistem operasi, library, dll. Asalkan ada Docker Engine kita hanya perlu menjalankan image/container maka aplikasi tersebut bisa berjalan, dan image yang tersedia juga ringan. Untuk pemahaman lebih lanjut bisa baca disini Docker Overview.
Hal yang perlu disiapkan yaitu Ubuntu disini saya menggunakan versi terbaru yaitu 22.04, bebas bisa menggunakan ubuntu server/desktop.
Pertama, lakukan update repository
ubuntu@web:~$ sudo apt update
Lalu install docker dengan perintah
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh

Setelah berhasil di install, agar docker bisa dijalankan menggunakan non-root user kita bisa menambahkan user kita ke group docker. Setelah menjalankan perintah ini kita harus logout terlebih dahulu agar penambahan user ke group bisa diterapkan.
sudo usermod -aG docker usernamemu
Agar bisa mengakses image yang ada di registry docker hub, kita harus membuat akun terlebih dahulu
kunjungi Docker Hub kemudian ada form pendaftaran isi sesuai keinginan setelah itu klik Sign-up.

Fungsi docker registry yaitu sebagai tempat penyimpanan image docker, image docker ini yang berisi berbagai macam aplikasi seperti PHP,NodeJS, Django dll. Biasanya image docker berbasis linux yang ringan seperti alpine, ada juga yang berbasis Debian & Ubuntu.
Selanjutnya kita perlu login di terminal dengan perintah
docker login
Kemudian isi username dan password docker hub yang tadi dibuat

Selanjutnya kita install docker-compose, apa itu docker compose? docker compose adalah alat yang bisa kita gunakan untuk menjalankan multi container dengan definisi yang kita inginkan, kita juga bisa membuat container ini saling terkait. Cara installnya cukup mudah yaitu cukup dengan perintah ini
sudo apt install docker-compose -y
Setelah berhasil menginstall docker-compose kita buat direktori untuk manajemen LAMP, untuk letaknya bebas sesuai keinginan, disini saya membuat direktori di home user.
mkdir ~/lamp
cd ~/lamp
Lalu kita buat file dengan teks editor kesukaan, misal nano dengan nama file docker-compose.yml
nano docker-compose.yml

Kita definisikan image yang kita perlukan, contohnya seperti ini:

version: "3.8"
services:
webserver:
container_name: "webserver"
image: php:7.4-apache
restart: always
volumes:
- "./www:/var/www/html/"
- "./config/php/php.ini:/usr/local/etc/php/php.ini"
ports:
- "8080:80"
mariadb:
image: mariadb:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: ROOTPASSWORD
volumes:
- dbdata:/var/lib/mysql
phpmyadmin:
image: phpmyadmin:latest
restart: always
environment:
PMA_HOST: mariadb
PMA_USER: root
PMA_PASSWORD: ROOTPASSWORD
UPLOAD_LIMIT: 512M
MEMORY_LIMIT: 512M
ports:
- "8081:80"
volumes:
dbdata:
Di dalam file konfigurasi kita bisa mendefinisikan banyak hal contohnya ports, contoh webserver dengan port 8080:80 berarti kita mengekspose port Host kita yaitu 8080 ke port 80 di container, jadi ketika ingin mengakses container kita menggunakan port 8080.
Kita bisa sesuaikan dengan kebutuhan kita seperti di web server kita menggunakan image php versi 7.4 untuk list image yang bisa digunakan bisa kita cari di Docker Hub. Ketik nama image di pencarian kemudian akan ada banyak list image yang bisa kita pakai

Ada logo hijau berarti image tersebut adalah official dari dockernya, di dalam image ada yang namanya tags berfungsi memberi tanda image dengan versi yang berbeda misal php:7.4-apache ada juga php:alpine3.14 bisa kita pakai sesuai keinginan

Kita bisa memasukkan file yang ada di linux ke container, misal menambahkan file php.ini dan diarahkan ke lokasi php.ini di container.
Berikut konfigurasi yang saya lakukan:
mkdir www
echo "<?php phpinfo(); ?>" > www/index.php
mkdir config/php ##Direktori konfigurasi
nano config/php/php.ini
memory_limit = 256M
post_max_size = 100M
upload_max_filesize = 100M
- Membuat folder www untuk penempatan file index.php yang di pasang ke container
- Membuat file index.php sederhana yaitu menampilkan versi php dengan phpinfo();
- Membuat folder config untuk php.ini
- Konfigurasi php.ini berisi memory_limit dll.
Setelah itu jalankan docker compose
docker-compose up -d
-d berarti kita jalankan container yang kita definisikan tadi secara background

Setelah perintah dijalankan maka secara otomatis docker akan mendownload image yang dibutuhkan dan menjalankan konfigurasi sesusai file docker-compose.yml
Untuk melihat container sudah jalan atau belum bisa menggunakan perintah
docker ps

Kita langsung saja coba akses melalui browser, dan taraa web php kita berhasil diakses

Lalu coba juga Akses ke PHPMyAdmin dengan port 8081, dan berhasil juga

Sekian dari saya, Selamat Mencoba!!
Referensi konfigurasi docker-compose yang siap pakai: