Cara Menggunakan Docker Pada Laravel

Cara Menggunakan Docker Pada Laravel

Sekarang ini banyak sekali cara untuk kita sebagai web developer melakukan proses pengembangan aplikasi web dengan mudah. Salah satunya dengan menggunakan framework laravel.

Akan tetapi selain menulis kode untuk aplikasi yang kita buat kita juga tetap perlu mengurusi server untuk digunakan sebagai tempat berjalan nya aplikasi yang kita buat.

Pekerjaan mengurusi server ini cukup menguras waktu dan tenaga apa lagi terkadang sistem operasi yang digunakan berbeda atara aplikasi server dan local computer kita.

Nah untuk mengatasi masalah itu kita bisa menggunakan docker sebagai solusi.

Apa itu docker?

Docker adalah sebuah project open source yang digunakan untuk mengolah teknologi container.

Docker ini sebenarnya adalah nama sebuah perusahaan yang mana product yang mereka buat juga diberi nama docker.

Docker sendiri adalah project open source akan tetapi juga ada versi berbayarnya. Silahkan buka disni untuk melihat docker versi berbayar.

Untuk mengolah container itu sendiri sebenarnya tidak hanya dengan docker masih ada software yang lain bisa kita gunakan. Akan tetapi disini kita akan fokus ke docker saja.

Apa itu container? 

Container kalau kita artikan dalam bahasa indonesia adalah kotak/wadah. Sedangkan container yang dimaksud disini adalah sebuah virtual machine ( sistem virtual adalah tempat sebuah aplikasi dijalankan ) yang akan kita setting sesuai kebutuhan kita.

Dengan teknologi container ini akan memudahkan kita untuk melakukan hal – hal yang berurusan dengan configurasi.

Salah satu contoh nya adalah kita bisa menggunakan docker untuk membuat konfigurasi server untuk project laravel.

Laravel sendiri memiliki banyak sekali fitur, mulai dari horizon, redis, echo dan yang lain – lainya, dimana setiap fitur – fitur yang terdapat pada laravel tersebut memerlukan konfigurasi server yang cukup ribet.

Pada kesempatan kali ini saya akan coba berikan sedikit trik untuk mengkonfigurasikan laravel dengan docker.

Laravel Docker

Sebenarnya sudah ada juga project open source yang bisa kita gunakan untuk mengkonfigurasi laravel dengan docker.

Akan tetapi buat kamu yang masih pemula pasti akan kebingungan karena memang agak ribet.

Nah kali ini saya akan coba buatkan contoh project untuk konfigurasi laravel dengan docker.

Saya harap disini anda sudah menginstall docker pada local computer anda. Jika belum install silahkan buka link dibawahi ini untuk instruksi installasi.

https://docs.docker.com/install/

Jika sudah selesai melakukan installasi silahkan ikuti langkah – langkah berikut ini :

Buat direktori project disini saya akan membuat direktory laravel-docker sebagai contoh saja.

mkdir laravel-docker

// Didalam laravel-docker
mkdir laravel-docker/src
mkdir laravel-docker/build

Selanjutnya silahkan download project laravel pada link berikut ini

https://github.com/laravel/laravel

Jika sudah terbiasa dengan git silahkan clone dan di taruh pada folder laravel-docker/src.

cd laravel-docker/src/
git clone https://github.com/laravel/laravel

Selanjutnya pada folder laravel-docker/build buat sebuah file dan beri nama Dockerfile.

Dan untuk isi file nya seperti berikut ini :

FROM php:7.2-fpm
LABEL maintainer="info@ahmadrosid.com"

# Installing dependencies
RUN apt-get update && apt-get install -y \
    build-essential \
    mysql-client \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    zip \
    jpegoptim optipng pngquant gifsicle

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Installing extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd

# Installing composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Allow container to write on host
RUN usermod -u 1000 www-data

# Changing Workdir
WORKDIR /application

Dockerfile

Dockerfile ini adalah sebuah file yang nantinya akan dibuild menjadi sebuah image dari container.

Image sendiri yang di maksud adalah sebuah linux sistem yang sudah terinstall beberapa aplikasi dan siap pakai, yang mana image ini juga nanti akan diinstall ke sebuah container.

Kalau kamu pengguna windows pasti tidak asing denga kaset untuk menginstall software kan.

Kalau kita ingin menginstall windows pasti kita perlu burnig windows ke sebuah kaset atau flask disk untuk di install pada laptop atau komputer kita.

Nah konsep image pada docker ini kurang lebih sama dengan konsep kaset, dan Dockerfile adalah cara burning nya, kira – kira begitu lah ya.

Pada contoh diatas Dockerfile digunakan untuk menginstall beberapa software sesuai kebutuhan project laravel.

Docker Compose

Docker compose adalah salah satu fitur yang dimiliki oleh docker yang mana dengan docker compose kita bisa membuat banyak container dan bisa saling terhubung.

Keuntungan dengan docker compose ini adalah kita bisa menginstall banyak aplikasi dalam sebuah komputer, yang mana dengan begitu akan mudah mengintegrasikan beberapa aplikasi dalam sebauh komputer.

Begitu juga dengan project laravel yang mana laravel membutuhkan beberapa aplikasi untuk fitur yang dimiliki oleh laravel.

Contohnya adalah laravel ini perli php versi  7.1-keatas untuk laravel 5.-keatas, dan membutuhkan database mysql, mariadb atau postgress, dan untuk server kita butuh apache atau nginx.

Nah dari berbagaimacam kebutuhan software itu tadi akan cukup memakan waktu untuk installasi dan konfigurasinya.

Jadi dengan docker compose itu kita bisa pecah menjadi beberap container yang dimana dengan begitu akan memudahkan kita untuk mengkonfigurasi kebutuhan software dari framework laravel ini.

File konfigurasi docker compose

Untuk menggunakan docker compose ini kita butuh sebuah file konfigurasi yang berextensi .yml atau .yaml.

Dalam latihan kali ini kita akan membuat 3 container, yang akan kita beri nama laravel_server, mysql dan nginx.

Dan berikut ini adalah file docker-compose.yml dan taruh file ini pada folder laravel-docker/docker-compose.yml.

version: '3'

services:
  blog-server:
    build: ./build
    image: laravel-blog
    depends_on:
      - mysql
    volumes:
      - ./src:/application:cached

  mysql:
    image: mysql:5.7
    user: "1000:50"
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=laravel
    volumes:
      - ./src/storage/tmp/db:/var/lib/mysql:cached

  nginx:
    image: nginx
    ports:
      - "8000:8000"
    volumes:
      - ./build/nginx.conf:/etc/nginx/conf.d/default.conf:cached
      - ./src:/application:cached
    depends_on:
      - blog-server

Sekarang kita bahas satu persatu code diatas.

Untuk configurasi docker compose kita menggunakan format file yml atau yaml.

Yang pertama kita bahas yml dulu, apa itu yml atau yaml?

Yaml adalah sebuah bahasa untuk memudahkan kita membaca data, salah satu fungsinya adalah untuk mendifinisikan nilai dari sebuah data.

Yaml ini mendukung beberapa format data diantaranya String, Integer, dan Array.

Sedangkan untuk memberikan nilai dari sebuah data pada yaml ini menggunakan titik dua ( : ) di ikuti dengan spasi dan nilai datanya, berikut ini contoh nya :

data: 'nilai dari datanya'

Nah mempelajari lebih dalam tentang bahasa yml ini silahkan buka tautan ini.

Untuk docker sendiri file yml ini penggunaanya adalah untuk mendefinisikan container yang akan di buat, secara simplenya adalah ini mendefinisikan spesifikasi dari software yang akan kita install.

Sama seperti saat kita akan menginstall sebuah software pada umumnya tentu kita akan memilih versi berapa yang akan kita gunakan, apakah versi 1 atau 2 dan seterusnya.

Saat mengkonfigurasikan sebuah container untuk docker tentu kita memerlukan spesifikasi software dengan versi tertentu.

Misalnya untuk kebutuhan laravel diperlukan php versi 7.1.3 keatas dan beberapa extensions lainya.

Dengan file konfigurasi docker compose yang ditulis dengan yml ini akan memudahkan kita untuk mengatur kebutuhan spesifikasi dari aplikasi – aplikasi yang dibutuhkan untuk laravel ini.

Pada file docker compose diatas di baris pertama ditulis

version: '3'

Diatas adalah versi dari file configurasi yml yang kita gunakan, docker juga mensupport beberapa versi yml, untuk lebih detailnya bisa baca disini.

services:

Selanjutnya ada services yang mana ini artinya adalah kita mendefinisikan service yang akan dijalankan pada docker.

Secara gampangnya adalah ibaratkan kita akan menginstall berapa komputer, jadi satu service ini ibarat satu komputer.

Nanti antara service ini akan bisa berkomunikasi antara satu dan yang lainya.

blog-server:
  build: ./build
  image: laravel-blog
  depends_on:
    - mysql
  volumes:
    - ./src:/application:cached

Selanjutnya pada kode diatas kita mendefinisikan sebuah service yang di beri nama blog-server.

Kemudian build mengarah ke folder build yang mana akan memproses Dockerfile seperti yang sudah kita bahas diatas.

Intinya docker compose ini mendefinisikan apa – apa saja yang akan di install pada container itu.

Untuk memahami software – software yang di definisikan pada docker compose ini memang agak cukup ribet jadi fell free untuk kamu nyoba – nyobain.

Membuat Container

Sekarang waktunya kita build container yang sudah kita definisikan pada file docker compose.

docker-compose up --build

Pada prosess ini akan memakan waktu cukup lama mungkin jika kamu menggunakan koneksi yang agak lambat.

Jika sudah selesai jalankan perintah ini untuk membuat file environment variable file ini adalah settingan konfigurasi laravel.

cp src/.env.example src/.env

Selanjutnya install dependencies atau library kode yang di butuhkan oleh laravel dengan menjalankan perintah berikut ini.

docker-compose run --rm --no-deps blog-server composer install

Sekarang kita perlu mengenerate key untuk keperluan encryption laravel.

docker-compose run --rm --no-deps blog-server php artisan key:generate

Dan buat database migration:

docker-compose run --rm --no-deps blog-server php artisan migrate

Sekarang jalankan perintah terakhir, setelah ini aplikasi laravel kita sudah siap dipakai.

docker-compose up -d

Untuk sumber kode lengkapnya dari tutorial kali ini silahkan buka di link berikut ini.

https://github.com/ar-android/laravel-docker

Kali ini saya rasa cukup dulu silahkan komentar jika ada permasalahan dan sampai jumpa pada tutorial berikutnya.

Leave a Reply

Your email address will not be published. Required fields are marked *