๐Ÿ“˜ Setup Legacy LAMP Stack dengan Podman

Dokumentasi lengkap untuk membuat environment Legacy Code dengan PHP 7.0.33 + Apache + MariaDB 10.1.37 + phpMyAdmin 4.8.4 menggunakan Podman.


๐Ÿ“ฆ Spesifikasi

  • PHP: 7.0.33
  • Database: MariaDB 10.1.37
  • phpMyAdmin: 4.8.4
  • Container: Podman + podman compose

๐Ÿ“ Struktur Folder

lamp/ โ”œโ”€โ”€ apache/ โ”‚ โ”œโ”€โ”€ Dockerfile โ”‚ โ””โ”€โ”€ vhost.conf โ”œโ”€โ”€ mariadb/ โ”‚ โ””โ”€โ”€ Dockerfile โ”œโ”€โ”€ phpmyadmin/ โ”œโ”€โ”€ code/ โ† Taruh source CodeIgniter 3 di sini โ”œโ”€โ”€ db_test.php โ† Opsional: untuk tes koneksi database โ”œโ”€โ”€ docker-compose.yaml


โš™๏ธ 1. Dockerfile Apache (PHP 7.0.33)

apache/Dockerfile

FROM php:7.0.33-apache

RUN sed -i 's|deb.debian.org|archive.debian.org|g' /etc/apt/sources.list && \
    sed -i '/security.debian.org/d' /etc/apt/sources.list && \
    sed -i '/stretch-updates/d' /etc/apt/sources.list && \
    echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/10no-check-valid && \
    echo 'Acquire::AllowInsecureRepositories "true";' >> /etc/apt/apt.conf.d/10no-check-valid && \
    echo 'APT::Get::AllowUnauthenticated "true";' >> /etc/apt/apt.conf.d/10no-check-valid

RUN apt-get update && \
    apt-get -o Acquire::AllowInsecureRepositories=true -o APT::Get::AllowUnauthenticated=true install -y \
    libpng-dev libjpeg-dev libonig-dev libxml2-dev \
    zip unzip git curl libmcrypt-dev \
    && docker-php-ext-install mysqli pdo pdo_mysql gd mbstring

RUN a2enmod rewrite

COPY vhost.conf /etc/apache2/sites-available/000-default.conf

WORKDIR /var/www/html

๐ŸŒ 2. Konfigurasi Apache

apache/vhost.conf

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

๐Ÿฌ 3. Dockerfile MariaDB

mariadb/Dockerfile

FROM mariadb:10.1.37

๐Ÿ”— 4. docker-compose.yaml

docker-compose.yaml

version: "3.7"

services:
  lamp_apache:
    build: ./apache
    container_name: lamp_apache
    ports:
      - "8080:80"
    volumes:
      - ./code:/var/www/html:Z
    networks:
      - lamp_net
    depends_on:
      - lamp_mariadb

  lamp_mariadb:
    build: ./mariadb
    container_name: lamp_mariadb
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: legacy_db
      MYSQL_USER: legacy_user
      MYSQL_PASSWORD: legacy_pass
    ports:
      - "3307:3306"
    volumes:
      - mariadb_data:/var/lib/mysql:Z
    networks:
      - lamp_net

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.8.4
    container_name: lamp_phpmyadmin
    environment:
      PMA_HOST: lamp_mariadb
      PMA_PORT: 3306
    ports:
      - "9090:80"
    depends_on:
      - lamp_mariadb
    networks:
      - lamp_net

volumes:
  mariadb_data:

networks:
  lamp_net:
    driver: bridge

๐Ÿ“ฅ 5. Masukkan Source Code

Masukkan seluruh isi CodeIgniter 3 ke dalam folder code/.


โœ… 6. Buat File Tes Database (Opsional)

code/db_test.php

<?php
$host = 'lamp_mariadb';
$db   = 'legacy_db';
$user = 'legacy_user';
$pass = 'legacy_pass';
$port = '3306';

try {
    $pdo = new PDO("mysql:host=$host;port=$port;dbname=$db", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "<h2 style='color:green;'>โœ… Koneksi ke database berhasil!</h2>";
} catch (PDOException $e) {
    echo "<h2 style='color:red;'>โŒ Koneksi gagal:</h2> " . $e->getMessage();
}
?>

๐Ÿš€ 7. Jalankan Project

podman network create lamp_net
podman compose -f docker-compose.yaml up --build -d

๐Ÿ” 8. Akses di Browser