Docker telah menjadi solusi populer dalam pengembangan aplikasi karena kemampuannya dalam mengelola lingkungan secara konsisten. Dalam artikel ini, kita akan membahas cara membuat Docker Compose untuk menjalankan CodeIgniter 4 dengan Apache, PostgreSQL, dan pgAdmin. Konfigurasi ini juga akan mengaktifkan ekstensi PHP intl, pgsql, dan mod_rewrite menggunakan Dockerfile untuk pengaturan yang lebih fleksibel
Struktur Folder
pastikan struktur proye seperti berikut
/project-root
├── docker-compose.yml
├── Dockerfile
Setiap layanan memiliki folder dan Dockerfile sendiri agar dapat dikustomisasi secara modular.
Konfigurasi Dockerfile untuk Codeigniter 4
Buat file app/Dockerfile untuk PHP dengan Apache, mengaktifkan ekstensi yang dibutuhkan seperti pgsql, intl, dan mengaktifkan mod_rewrite:
# 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 dan PostgreSQL
RUN docker-php-ext-install intl pgsql
# Aktifkan mod_rewrite Apache
RUN a2enmod rewrite
# Restart Apache agar perubahan berlaku
RUN service apache2 restart
EXPOSE 80
CMD ["apache2-foreground"]
Konfigurasi Docker Compose
Buat file docker-compose.yml untuk menghubungkan semua layanan:
version: '3.8'
services:
app:
build: .
container_name: codeigniter4_app
restart: always
volumes:
- ./html:/var/www/html
ports:
- "8080:80"
depends_on:
- db
environment:
- CI_ENV=development
networks:
- ci_network
db:
image: postgres:15
container_name: ci4_postgres
restart: always
environment:
POSTGRES_USER: ci4_user
POSTGRES_PASSWORD: ci4_password
POSTGRES_DB: ci4_database
volumes:
- ./postgresql/data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- ci_network
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin_ci4
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: adminpassword
ports:
- "5050:80"
depends_on:
- db
networks:
- ci_network
networks:
ci_network:
driver: bridge
Menjalankan Docker Compose
Setelah semua konfigurasi selesai, jalankan perintah berikut untuk membangun semua layanan:
docker-compose up --build -d