Dockerise Laravel dengan Portainer

Dockerise Laravel dengan Portainer

Dockerise Laravel dengan Portainer

Ditulis oleh: Fatih Athaillah Nugroho

https://radnet-digital.id/

Pendahuluan

Dalam tutorial ini, kita akan menggunakan Portainer untuk mengelola kontainer Docker dan mendockerise aplikasi Laravel. Dengan cara ini, Anda dapat dengan mudah menjalankan aplikasi Laravel di lingkungan yang terisolasi dan terkelola.

Persiapan

  • Pastikan Anda memiliki server dengan Docker dan Portainer terinstal.
  • Siapkan aplikasi Laravel yang akan didockerise.
  • Pastikan Anda memiliki akses ke Portainer UI.

Struktur Direktori Laravel-Project


laravel-project/
├── Dockerfile
├── docker-compose.yml
├── nginx/
│   └── conf.d/
│       └── app.conf
└── (Laravel project files)
    

Langkah-Langkah

1. Clone Repository Laravel


mkdir laravel-project
cd laravel-project
git clone https://github.com/laravel/laravel.git
    

2. Buat File docker-compose.yml


version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: laravel_app
    restart: unless-stopped
    working_dir: /var/www/
    volumes:
      - ./:/var/www
    networks:
      - laravel_net

  nginx:
    image: nginx:alpine
    container_name: laravel_nginx
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./:/var/www
      - ./nginx/conf.d:/etc/nginx/conf.d/
    networks:
      - laravel_net

  db:
    image: mysql:5.7
    container_name: laravel_db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: laravel_db
      MYSQL_ROOT_PASSWORD: your_root_password
      MYSQL_PASSWORD: your_password
      MYSQL_USER: laravel_user
    volumes:
      - dbdata:/var/lib/mysql/
    networks:
      - laravel_net

networks:
  laravel_net:
    driver: bridge

volumes:
  dbdata:
    driver: local
    

3. Buat File Dockerfile


FROM php:8.2-fpm

RUN apt-get update && apt-get install -y build-essential libpng-dev libjpeg62-turbo-dev libfreetype6-dev locales zip jpegoptim optipng pngquant gifsicle vim unzip git curl libzip-dev
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install pdo_mysql zip exif pcntl
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
WORKDIR /var/www
COPY . /var/www
COPY --chown=www:www . /var/www
USER www
EXPOSE 9000
CMD ["php-fpm"]
    

4. Konfigurasi Nginx


server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}
    

5. Sesuaikan File .env


APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=username_anda
DB_PASSWORD=password_anda
    

6. Jalankan Docker Compose


sudo docker-compose up -d --build
sudo docker-compose exec app composer install
sudo docker-compose exec app php artisan key:generate
    

Kesimpulan

Dengan langkah-langkah di atas, Anda berhasil mendockerise aplikasi Laravel menggunakan Docker dan Portainer. Aplikasi Anda kini berjalan di lingkungan container yang efisien dan terisolasi, serta mudah dikelola melalui Portainer.

Comments

Popular posts from this blog

Panduan Instalasi Portainer di Ubuntu Server

Rangkuman Webinar Solusi IoT dengan ESP - Teknologi Pintar untuk Kehidupan Sehari-hari

Automation With Ansible