Dalam tutorial ini, kita akan memandu Anda langkah demi langkah untuk membuat dan menjalankan aplikasi Laravel menggunakan Docker, Nginx, MySQL, dan PHP versi 8.2. Docker memungkinkan Anda untuk mengisolasi dan menjalankan aplikasi di lingkungan yang terkendali, sementara Nginx berfungsi sebagai server web, MySQL sebagai database, dan PHP sebagai interpreter skrip.
Langkah 1: Persiapkan Proyek Laravel Anda
Pastikan Anda sudah memiliki proyek Laravel atau buat satu dengan perintah:
composer create-project --prefer-dist laravel/laravel nama-proyek
Pindah ke direktori proyek:
cd nama-proyek
Langkah 2: Buat Dockerfile
Buat file bernama Dockerfile di direktori proyek Anda dan masukkan konten berikut:
# Gunakan gambar resmi PHP versi 8.2 sebagai dasar
FROM php:8.2-fpm
# Instal ekstensi yang diperlukan
RUN apt-get update && apt-get install -y \
libzip-dev \
unzip \
git \
&& docker-php-ext-install pdo_mysql zip
# Instal Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Setel pekerjaan direktori ke /var/www
WORKDIR /var/www
# Salin file composer dan file Laravel
COPY composer.json ./
COPY composer.lock ./
RUN composer install --no-scripts --no-autoloader
# Salin sumber daya proyek Laravel
COPY . .
# Lakukan instalasi lengkap Laravel
RUN composer dump-autoload
RUN php artisan clear-compiled
RUN php artisan optimize
# Atur izin file
RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache
# Expose port 9000 dan jalankan PHP-FPM
EXPOSE 9000
CMD ["php-fpm"]
Langkah 3: Buat docker-compose.yml
Buat file docker-compose.yml di direktori yang sama dengan konten berikut:
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
image: laravel-app
container_name: laravel-app
restart: unless-stopped
working_dir: /var/www
volumes:
- .:/var/www
networks:
- laravel-network
nginx:
image: nginx:latest
container_name: laravel-nginx
restart: unless-stopped
ports:
- "8000:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app
networks:
- laravel-network
mysql:
image: mysql:latest
container_name: laravel-mysql
restart: unless-stopped
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root_password
ports:
- "3306:3306"
networks:
- laravel-network
networks:
laravel-network:
driver: bridge
Langkah 4: Buat File Konfigurasi Nginx
Buat file konfigurasi Nginx, misalnya nginx.conf, di direktori proyek Anda:
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass app:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Langkah 5: Bangun dan Jalankan Kontainer
Buka terminal dan jalankan perintah berikut untuk membangun dan menjalankan kontainer:
docker-compose up -d
Aplikasi Laravel Anda sekarang harus dapat diakses melalui http://localhost:8000. Pastikan untuk menyesuaikan port dan konfigurasi sesuai kebutuhan proyek Anda.
Selamat! Anda sekarang memiliki lingkungan pengembangan Laravel yang dapat dijalankan dengan mudah menggunakan Docker.