LNMP Stack dengan Docker
LNMP Stack dengan Docker

Membangun LNMP Stack dengan Docker

Dalam dunia pengembangan web, LNMP Stack (Linux, Nginx, MySQL, PHP) telah menjadi pilihan populer untuk aplikasi PHP.

Dengan kemunculan Docker, pengembang kini dapat membangun dan mengelola lingkungan LNMP dengan lebih efisien, konsisten, dan portabel.

Apa itu LNMP Stack dengan Docker?

LNMP Stack dengan Docker adalah implementasi arsitektur web menggunakan container Docker untuk setiap komponen:

  • Linux: Sistem operasi dasar (host)
  • Nginx: Web server dalam container
  • MySQL: Database server dalam container
  • PHP: PHP-FPM dalam container terpisah

Membuat Directory Compose dan File Source Code PHP

Buat sebuah directory untuk digunakan compose dan file source code, yaitu lnmp dan www.

mkdir -p lnmp/www

cd lnmp

Membuat Folder Docker LNMP
Membuat Folder Docker LNMP

Buatk sebuah file index.php berisi function phpinfo(), untuk menguji Web Server Nginx dan PHP.

touch www/index.php

echo “<?php phpinfo(); ?>” > www/index.php

Membuat File Index php
Membuat File Index php

Membuat File Docker Compose

Buat file docker compose untuk deskripsikan docker, fungsi untuk mengotomatiskan pembuatan container seperti Nginx, MariaDB, dan phpMyadmin.

touch docker-compose.yml

Membuat File Docker Compose
Membuat File Docker Compose

Masukan script docker ke dalam file docker-compose.yml, sesuaikan configuration dengan kebutuhan.

services:
    php-nginx:
        image: webdevops/php-nginx:8.1-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: “PASSWORD_ROOT”
            MYSQL_USER: “USER”
            MYSQL_PASSWORD: “PASSWORD_USER”
            MYSQL_DATABASE: “NAME_DATABASE”
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links:
            – mariadb:db
        ports:
            – 8080:80
volumes:
    vol-mariadb:

Keterangan Docker Compose Versi Simple:

  • 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 8080 di host ke port 80 di container.

Jalankan perintah dibawah untuk execute file docker compose yang sudah dibuat.

sudo docker compose up -d

Build Docker Container
Build Docker Container

Selanjutnya melihat hasil menjalankan file compose dengan perintah sudo docker compose ps, pastikan ada tiga container yaitu: Nginx, MariaDB dan phpMyadmin dengan STATUS Up.

Melihat Status Container LNMP Stack
Melihat Status Container LNMP Stack

Pengujian Container Nginx, MariadDB dan phpMyadmin

Akses IP Public pada browser http://IP_PUBLIC, pastikan muncul halaman PHP INFO yang sebelumnya kita buat file index.php.

Menguji Container Nginx
Menguji Container Nginx

Untuk mengakses phpMyadmin akses pada browser http://IP_PUBLIC:8080, maka akan muncul from login. Masukan username dan password yang sebelumnya di deklarasikan pada file docker compose.

Menguji Container phpMyAdmin
Menguji Container phpMyAdmin

Konfigurasi Docker Compose tersebut memungkinkan kita untuk menyiapkan tumpukan LNMP (Linux, Nginx, MariaDB, PHP) dalam lingkungan container Docker.

Lingkungan ini terdiri dari tiga layanan tercontainerisasi. Layanan php-nginx berperan sebagai web server yang dilengkapi dengan PHP. Layanan mariadb menyediakan fungsi database, sementara phpmyadmin menyajikan antarmuka grafis berbasis web untuk mengelola database pada container MariaDB tersebut.