You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
jika ingin buat/edit file tinggal ke folder web-server/belajardocker, dan buat scriptmu sendiri
jika sudah maka tinggal ketik, misal disini saya buat file test.php
test.php:
<?phpecho"testing";
?>
IPmu/test.php
contoh:
172.160.x.x/test.php
Dikasus ini
Port 80 adalah apache webservernya dan
port 8822 adalah phpmyadminnya
port mysql adalah port 3306
Hapus Bersih Docker biar gak makan Penyimpanan
pertama kita ketik
docker ps -a
Salin container ID dan nama IMAGE nya
docker stop
sebagai contoh disini container web-server-web, phpmyadmin/phpmyadmin, dan mariadb:10.11 saya adalah (31627fbeec8c dab0c8f1e0a2 d572bb1a578b
🐳 Panduan Modern: Setup Web Server PHP & MySQL dengan WSL 2 dan Docker
Panduan ini dirancang untuk membantu siapa saja—termasuk pemula—untuk membangun lingkungan pengembangan web (local web server) berbasis PHP, Apache, phpMyAdmin, dan MariaDB/MySQL menggunakan teknologi WSL 2 dan Docker.
Pastikan Docker sudah terpasang dengan benar dengan mengecek versinya di dalam terminal WSL:
docker -v
📂 Langkah 4: Struktur Direktori & Pembuatan Server
Mari buat folder kerja untuk web server Anda di dalam lingkungan WSL. Jalankan perintah-perintah berikut secara berurutan di dalam terminal Linux Anda:
# Pindah ke direktori homecd~# Buat folder utama untuk proyek web server
mkdir web-server
# Masuk ke folder tersebut untuk membuat konfigurasi Dockercd web-server
nano Dockerfile
nano docker-compose.yml
# Buat folder khusus untuk meletakkan file-file website (PHP/HTML)
mkdir belajardocker
# Masuk ke folder website dan buat file index pertama Andacd belajardocker
nano index.php
🗂 Struktur Folder Proyek
Struktur folder Anda akan terlihat rapi seperti gambar di bawah ini:
💡 Tips Pengembangan: Jika ke depannya Anda ingin membuat atau mengedit file website, Anda cukup masuk ke dalam folder web-server/belajardocker/ lalu buat script Anda sendiri di sana.
🌐 Langkah 5: Akses & Pengujian Web Server
1. Mengetahui IP Docker Anda
Untuk mengakses website yang berjalan di dalam Docker, Anda perlu mengetahui IP Address dari WSL Anda terlebih dahulu. Jalankan perintah ini di terminal WSL:
ifconfig
Cari bagian eth0 dan lihat pada baris inet. IP yang tertera di sana adalah alamat IP server lokal Anda (Contoh: 172.160.x.x).
2. Menguji File PHP
Sebagai contoh, mari kita buat sebuah file bernama test.php di dalam folder belajardocker:
<?phpecho"testing";
?>
3. Cara Mengakses di Browser
Buka browser favorit Anda (Chrome/Edge/Firefox), lalu ketikkan alamat IP yang sudah Anda dapatkan diikuti dengan nama filenya:
Seiring berjalannya waktu, kontainer dan image Docker yang sudah tidak digunakan dapat memakan kapasitas penyimpanan (storage) hardisk Anda. Berikut cara membersihkannya sampai bersih:
1. Cek Seluruh Kontainer yang Ada
docker ps -a
Catat atau salin Container ID dan nama IMAGE yang ingin dihapus.
2. Hentikan Kontainer yang Sedang Berjalan
docker stop <Container_ID>
3. Hapus Kontainer Proyek
Sebagai contoh, jika Anda memiliki kontainer bernama web-server-web, phpmyadmin, dan mariadb dengan ID 31627fbeec8c, dab0c8f1e0a2, dan d572bb1a578b, jalankan perintah:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CARA 1: Paling Praktis (Ubah ke Local Bind Mount lalu Zip)
Di script docker-compose.yml sebelumnya, kita menyimpan database MariaDB menggunakan Named Volume bawaan Docker (db_data:/var/lib/mysql). Volume ini tersimpan jauh di dalam sistem Linux/WSL.
Biar gampang dikirim, kita paksa MariaDB untuk menyimpan datanya langsung di dalam folder project kita.
Langkah 1: Edit file docker-compose.yml dengan isian dari docker-compose2-share.yml
Ubah bagian volumes pada service db menjadi titik-slash (./), seperti ini:
Langkah 2: Restart Docker-nya
Jalankan lagi docker compose up -d. Sekarang, kamu akan melihat folder baru bernama mysql_data muncul di dalam folder project-mu.
Langkah 3: Kirim ke Orang Lain
Matikan dulu Docker-nya: docker compose down (biar datanya nggak ada yang corrupt saat dikirim).
Jadikan seluruh folder project-mu (yang isinya docker-compose.yml, Dockerfile, folder belajardocker/, dan folder mysql_data/) menjadi file .zip atau .tar.gz.
Kirim file .zip tersebut ke temanmu.
Langkah 4: Cara Temanmu Menjalankannya
Temanmu cukup mengekstrak file .zip tersebut, buka terminal di dalam folder itu, lalu ketik:
docker compose up -d --build
Boom! Server jalan, dan datanya langsung persis seperti yang ada di komputermu karena folder mysql_data tadi ikut terbawa.
CARA 2: Best Practice Server (Backup Data ke File .SQL)
Cara pertama praktis untuk development, tapi kalau beda sistem operasi (misal kamu pakai Linux, temanmu pakai Windows), folder mysql_data kadang suka kena masalah permission (hak akses). Cara paling aman dan pro adalah melakukan Database Dump.
Langkah 1: Export Data (Dump) dari dalam Container
Pastikan container database kamu sedang jalan, lalu ketik perintah ini di terminal WSL kamu untuk mengekspor isi databasenya menjadi file SQL:
# Ganti 'nama_container_db' dengan nama container database kamu (bisa dicek pakai 'docker ps')
docker exec nama_container_db mariadb-dump -u admin_crud -puser_password_rahasia crud_db > backup_data.sql
Catatan: Tidak ada spasi antara -p dan password user_password_rahasia.
Langkah 2: Kirim Project & File SQL
Jadikan folder project-mu (file compose, source code PHP) ditambah file backup_data.sql tadi menjadi satu file .zip, lalu kirim ke temanmu.
Langkah 3: Cara Temanmu Menjalankannya
Temanmu mengekstrak .zip dan menjalankan docker compose up -d --build. (Aplikasi jalan, tapi data masih kosong).
Temanmu menyuntikkan file backup_data.sql ke dalam databasenya dengan perintah:
Di kasus kita, karena kamu mengirimkan file Dockerfile dan docker-compose.yml, temanmu akan men-download dan men-build ulang image-nya secara otomatis saat dia mengetik docker compose up -d --build. Ini adalah cara paling elegan dan ukurannya paling kecil untuk dikirim (karena kamu cuma mengirim text/kode).
Tetapi, jika kamu punya Image yang tidak ada Dockerfile-nya dan mau dikirim mentahannya dalam bentuk file offline, kamu bisa menggunakan fitur Save dan Load:
Kamu menyimpan Image ke file tar:
docker save -o mentahan_image.tar nama_image_kamu
Temanmu me-load Image tersebut di komputernya:
docker load -i mentahan_image.tar
(Namun ingat, docker save ini HANYA mengirim aplikasinya saja, TIDAK membawa data dari Volume database seperti yang sudah saya jelaskan di atas).
Untuk project webserver dan CRUD kamu, saya sangat menyarankan menggunakan CARA 1 jika temanmu juga menggunakan WSL/Linux, atau CARA 2 jika ingin menghindari error beda Operating System!