š§ 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 butuhindex.php
. - Gunakan mysql:8.0-debian jika CPU kamu tidak mendukung x86-64-v2.
- Pantau log dan error agar lebih cepat mendeteksi masalah.