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