Docker adalah platform yang memungkinkan pengembang untuk mengemas aplikasi beserta seluruh dependensinya ke dalam sebuah container. Container ini dapat dijalankan di berbagai sistem operasi tanpa perlu melakukan konfigurasi ulang. Dengan demikian, aplikasi menjadi lebih konsisten, portabel, dan mudah untuk dikelola.
Langkah-Langkah Deployment
1. Struktur project
Pastikan struktur project Laravel Anda sesuai standar, dengan direktori utama berisi folder src.
2. Membuat Docker
Buat file bernama Dockerfile di root project Laravel Anda dengan isi sebagai berikut:
FROM php:8.2-fpm
RUN apt-get update && apt-get install -y \
git curl libpng-dev libonig-dev
libxml2-dev zip unzip \
&& docker-php-ext-install
pdo_mysql mbstring exif pcntl bcmath gd
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www
COPY ./src /var/www
RUN chown -R www-data:www-data /var/www \
&& chmod -R 755
/var/www/storage /var/www/bootstrap/cache
EXPOSE 9000
CMD ["php-fpm"]
3. Konfigurasi Nginx
Buat file baru di root project Bernama
nginx.conf yang berisi:
server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/public;
location / {
try_files $uri $uri/
/index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param
SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
4. Membuat Compose
Buat file bernama Compose.yml dengan isi sebagai berikut:
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: app
restart: unless-stopped
volumes:
- ./src:/var/www
networks:
- laravel
nginx:
image: nginx:alpine
container_name: laravel_nginx
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./src:/var/www
-
./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
networks:
- laravel
mysql:
image: mysql:8.0
container_name: laravel_mysql
restart: unless-stopped
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: laravel
volumes:
- mysql_data:/var/lib/mysql
networks:
- laravel
networks:
laravel:
volumes:
mysql_data:
5. Konfigurasi .env
Atur konfigurasi database pada file .env seperti berikut:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel
6. Build Container
Setelah file Dockerfile dan docker-compose.yml dibuat, jalankan perintah berikut di cmd:
docker-compose build
Jalankan container dengan perintah:
docker
compose up
Jika berhasil, aplikasi Laravel dapat diakses melalui: http://localhost:8080
8. Migrasi Database
Untuk membuat tabel database, jalankan perintah ini di cmd:
docker exec -it app php artisan migrate
9. Testing dan Verifikasi
Pastikan aplikasi berjalan dengan benar. Cobalah mengakses endpoint bawaan Laravel atau buat route baru untuk memastikan Laravel berhasil dijalankan di dalam container
Tips Troubleshooting
1. Jika container tidak dapat dijalankan, periksa log dengan perintah: docker logs <nama_container> atau docker compose logs
2. Pastikan port
8080 dan 3306 tidak digunakan oleh aplikasi lain
3. Jika migrasi gagal, periksa konfigurasi database pada file .env
Penutup
Melalui modul ini, teleh memperaktikan cara membangun dan menjalankan cara membangun dan menjalanka Laravel menggunakan Docker. Teknik ini mendukung pengembangan modern yang menuntun efisiensi, konsistensi dan kemudahan scaling. Penerapan konsep ini relevan dengan kebutuhan industri, sehingga keterampilan yang diperoleh dapat langsung diaplikasikan dalam proyek nyata