Setup Docker Container untuk CodeIgniter 4, MySQL (Debian), dan phpMyAdmin

🧭 Awal Mula: Ide Membuat Kontainer Dev

Saya ingin membuat lingkungan pengembangan berbasis Docker untuk CodeIgniter 4, agar proses development lebih stabil, portable, dan mudah direplikasi. Untuk itu, saya butuh stack yang terdiri dari:

  • Apache + PHP untuk menjalankan CI4
  • MySQL sebagai database backend
  • phpMyAdmin sebagai UI administrasi database
  • Aktifnya mod_rewrite agar CI4 bisa routing tanpa index.php

šŸ—ļø Merancang Dockerfile dan docker-compose.yml

Alih-alih menggunakan image php:8.2-apache secara langsung, saya memutuskan membuat Dockerfile kustom agar bisa mengaktifkan mod_rewrite dan menyusun konfigurasi Apache sesuai kebutuhan.

šŸ“„ Dockerfile untuk Apache + PHP

Dockerfile

# Menggunakan image dasar PHP dengan Apache
FROM php:8.2-apache

# Perbarui package manager dan install ekstensi yang diperlukan
RUN apt-get update && apt-get install -y \
    libicu-dev \
    libpq-dev \
    unzip

# Aktifkan ekstensi PHP Intl 
RUN docker-php-ext-install intl 

# Aktifkan mod_rewrite Apache
RUN a2enmod rewrite

# Restart Apache agar perubahan berlaku
RUN service apache2 restart

EXPOSE 80
CMD ["apache2-foreground"]

šŸ“„ apache-config.conf

apache

<VirtualHost *:80>
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

šŸ“¦ docker-compose.yml

yaml

name: 'ci4app'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ci4_app
    ports:
      - "8080:80"
    volumes:
      - ./ci4:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8.0-debian
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: ci4db
      MYSQL_USER: ci4user
      MYSQL_PASSWORD: ci4pass
    volumes:
      - ./mysql:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db
      PMA_USER: ci4user
      PMA_PASSWORD: ci4pass
    depends_on:
      - db

āš ļø Masalah yang Terjadi: MySQL Error x86-64-v2

Saat pertama kali saya jalankan stack ini dengan docker compose up --build, CI4 langsung muncul di port 8080, tapi phpMyAdmin gagal tersambung ke database.

Setelah saya cek log mysql_db, ternyata muncul error:

Fatal glibc error: CPU does not support x86-64-v2

Saya baru sadar kalau image mysql:8.0 berbasis Oracle Linux 9 yang butuh CPU dengan dukungan modern. Dan processor saya belum mendukung x86-64-v2 šŸ˜….

šŸ”„ Solusi: Ganti dengan mysql:8.0-debian

Setelah mencari tahu, saya menemukan kalau image mysql:8.0-debian lebih ringan dan tidak butuh instruksi CPU canggih. Saya langsung ganti di docker-compose.yml:

yaml

image: mysql:8.0-debian

Lalu saya jalankan ulang:

bash

docker compose down
docker compose up --build -d

Dan… berhasil! šŸŽ‰ Semua kontainer hidup dengan baik, CI4 bisa routing dengan .htaccess, dan phpMyAdmin langsung tersambung ke database.

āœ… Kesimpulan

  • Gunakan Dockerfile untuk kontrol penuh terhadap konfigurasi Apache dan PHP.
  • Aktifkan mod_rewrite dengan a2enmod rewrite agar CI4 tidak butuh index.php.
  • Gunakan mysql:8.0-debian jika CPU kamu tidak mendukung x86-64-v2.
  • Pantau log dan error agar lebih cepat mendeteksi masalah.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.