Deploy CodeIgniter 3 Menggunakan Docker

Sebuah web app berbasis CodeIgniter 3 harus dideploy, masalahnya web app tersebut membutuhkan PHP versi 5.6 yang repot untuk saya install di Ubuntu 18.04. Oleh karena itu saya menggunakan docker untuk mendeploy web app tersebut.
Source code web app terdapat pada folder myweb, berikut ini adalah konfigurasi yang harus dilakukan

config.php

Ubah base_url di konfigurasi CI dengan mengedit file application/config/config.php. Ubah host dan port, misal di sini saya menggunakan port 8080 di localhost
$config['base_url'] = 'http://localhost:8080/myweb

.htaccess

Selanjutnya edit file .htaccess di dalam folder myweb (source code web app) untuk mengakfitkan ewrite engine PHP
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Dockerfile

Buat file Dockerfile di luar folder myweb (source code web app CI) dengan isi sebagai berikut
FROM php:5.6.38-apache
RUN apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pdo pdo_pgsql
RUN a2enmod rewrite
COPY myweb /var/www/html/myweb
Dockerfile tersebut akan digunakan untuk membuat image yang memuat PHP 5.6.38 + Apache web server.
Image juga dilengkapi dengan driver pdo dan pdo_pgsql karena web CI yang digunakan menggunakan database Postgresql. Apabila menggunakan DBMS lain, sesuaikan jenis drivernya.
Image akan mengaktifkan mod rewrite engine melalui perintah a2enmod rewrite, sehingga nanti tidak perlu menulis index.php ketika mengakses web CI yang dijalankan.
Perintah COPY myweb /var/www/html/myweb digunakan untuk menyalin isi folder myweb ke folder /var/www/html/myweb

Build docker image

Selanjutnya lakukan build docker image, masuk ke directory tempat Dockerfile berada kemudian eksekusi perintah berikut
sudo docker build -t php5 .
Docker image akan dibuild dengan nama php5

Menjalankan docker container

Jalankan docker container menggunakan perintah berikut
sudo docker run --rm -p 8080:80 php5
Buka web browser dan ketik localhost:8080 untuk mengakses web app

Comments