Install LEMP dengan Docker
Pada tutorial kali ini, kita akan belajar cara install LEMP dengan menggunakan Docker. Docker adalah perangkat lunak yang digunakan untuk mengemas, mengirim, dan menjalankan aplikasi secara konsisten di environment yang terisolasi yang disebut container. Dengan Docker, developer dapat mengemas semua dependensi dan konfigurasi yang dibutuhkan oleh aplikasi ke dalam container yang dapat dijalankan di berbagai sistem operasi. Hal ini memungkinkan aplikasi untuk berjalan dengan cepat dan konsisten di berbagai environment, memudahkan proses development, deployment, dan skalabilitas aplikasi.
Install Docker
Install Docker di Ubuntu dimulai dengan mengunduh key untuk repository Docker.
1 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
Memasang repository Docker.
1 2 3 | echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
Memperbarui cache repository.
1 | apt update |
Menginstall Docker.
1 | apt install docker-ce docker-ce-cli containerd.io -y |
Install Docker Compose
Docker Compose adalah tool yang digunakan untuk mendefinisikan dan menjalankan aplikasi yang terdiri dari beberapa layanan yang terkontainerisasi menggunakan Docker. Dengan Docker Compose, developer dapat menyusun konfigurasi yang terdiri dari beberapa kontainer Docker dan mendefinisikan hubungan serta pengaturan yang diperlukan antara container-container tersebut. Hal ini memudahkan developer untuk menyatukan dan mengelola berbagai komponen aplikasi dalam development environment yang terisolasi dan mudah di-deploy ke production environment.
Mengunduh Docker Compose dari github.com/docker/compose.
1 | wget https://github.com/docker/compose/releases/download/v2.19.0/docker-compose-linux-x86_64 -O /usr/bin/docker-compose |
Memberikan permission execute.
1 | chmod +x /usr/bin/docker-compose |
File Docker Compose
Membuat direktori untuk project lemp.
1 | mkdir -p lemp/www |
Masuk ke direktori lemp.
1 | cd lemp |
Membuat file index.php yang berisi fungsi phpinfo().
1 | echo "<?php phpinfo(); ?>" > www/index.php |
Membuat file Docker Compose.
1 | nano docker-compose.yml |
Masukkan konfigurasinya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | version: '3.7' services: php-nginx: image: webdevops/php-nginx:8.2-alpine ports: - 80:80 volumes: - ./www:/app mariadb: image: mariadb:10.6.8 volumes: - vol-mariadb:/var/lib/mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: "no" MYSQL_ROOT_PASSWORD: "secret" MYSQL_USER: "myuser" MYSQL_PASSWORD: "mypass" MYSQL_DATABASE: "mydb" phpmyadmin: image: phpmyadmin/phpmyadmin links: - mariadb:db ports: - 8181:80 volumes: vol-mariadb: |
Ringkasan docker-compose.yml:
- Membuat container php-nginx yang berbasis image webdevops/php-nginx:8.2-alpine, forward port 80 di host ke port 80 di container, dan mounting direktori www ke /app.
- Membuat container mariadb yang berbasis image mariadb:10.6.8, membuat dan mounting volume vol-mariadb ke /var/www/lib/mysql, dan set environment variabel.
- Membuat container phpmyadmin yang berbasis image phpmyadmin/phpmyadmin, terhubung ke container mariadb, dan forward port 8181 di host ke port 80 di container.
Build Container
Menjalankan docker-compose untuk build container.
1 | docker-compose up -d |
Setelah build container selesai, cek apakah container sudah berjalan.
1 | docker ps |
Browse http://IP-server untuk menguji apakah Nginx web server sudah aktif dan dapat menjalankan script PHP.
Akses http://IP-server:8181 untuk menguji apakah phpMyAdmin sudah aktif dan dapat mengakses database.
Dengan menggunakan konfigurasi Docker Compose di atas, kita akan dapat menginstal LEMP stack (Linux, Nginx, MariaDB, PHP) dengan menggunakan Docker. Container php-nginx menyediakan Nginx web server dengan PHP, container mariadb menyediakan MariaDB database, dan container phpmyadmin menyediakan web interface untuk mengelola MariaDB database yang terhubung.
Selamat mencoba 🙂