Your cart is currently empty!
Menjalankan Laravel 8 dengan Docker
Untuk menjalankan Laravel 8, kita membutuhkan beberapa layanan (service) yang saling berinteraksi:
- Database service menggunakan image mariadb:latest
– Bertujuan untuk menyimpan data - Application service menggunakan image php:8-fpm-alpine
– Bertujuan untuk mengolah file php - Web service menggunakan image nginx:latest
– Bertujuan untuk menerima dan merespon permintaan dari klien
Database service
Menyiapkan container
# Download image yang dibutuhkan
docker pull mariadb
# Buat dan jalankan container
docker run \
--name=db \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=laravel \
-d \
mariadb
Application service
Menyiapkan container
# Download image yang dibutuhkan
docker pull php:8-fpm-alpine
# Buat dan jalankan container
docker run \
--name app \
-p 9000:9000 \
-d \
php:8-fpm-alpine
Mengkonfigurasi container
# Masuk ke dalam container
docker exec -it app sh
# Update package manager
apk update
# Install program yang dibutuhkan
apk install git
# Kita perlu menambahkan PHP esktensi: PDO dan PDO_MYSQL
docker-php-ext-install pdo pdo_mysql
# Clone repository ke folder /app
git clone https://github.com/laravel/laravel /app
# Download dan install composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --install-dir=/usr/bin --filename=composer
php -r "unlink('composer-setup.php');"
# Masuk ke directory /app
cd /app
# Install paket composer
composer install
# Copy .env file
cp .env.example .env
# Edit .env file
...
DB_CONNECTION=mysql
DB_HOST=172.17.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=secret
...
# Generate key
php artisan key:generate
# Pastikan Laravel sudah terkoneksi ke database
php artisan migrate:fresh
Jika anda mengalami masalah dengan Mysql driver yang belum terinstall, anda dapat mengetikan perintah kill -USR2 1
atau 1. Keluar dari container, 2. Menghentikan container, lalu 3. Memulainya kembali.
Web service
Menyiapkan container
# Download image yang dibutuhkan
docker pull nginx
# Buat dan jalankan container
docker run \
--name web \
-p 8000:80 \
-d
nginx
Mengkonfigurasi container
# Masuk ke dalam container
docker exec -it web bash
# Update package manager
apt update
# Install program yang dibutuhkan
apt install vim
# Edit Nginx config file di /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
root /app/public/;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 172.17.0.1:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
# Berdasarkan konfigurasi di atas,
# Nginx akan mencari file index.php di dalam folder /app/public,
# maka kita harus menyiapkan file tersebut
mkdir -p /app/public
touch /app/public/index.php
# Reload configurasi Nginx
nginx -s reload
Buka browser anda dan arahkan ke http://localhost:8000. Anda akan mendapatkan halaman awal dari Laravel jika semua telah terkonfigurasi dengan baik.
Selamat mencoba!
Leave a Reply