๐ 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
- Aplikasi: http://localhost:8080
- phpMyAdmin: http://localhost:9090
- Server: lamp_mariadb
- User: legacy_user
- Pass: legacy_pass