Panduan Lengkap: WSL2 + Mise + Docker Development Environment
Daftar Isi
- Instalasi WSL2 di Windows
- Setup Environment Dasar WSL
- Instalasi dan Konfigurasi Mise
- Uninstall PHP/Node/Python dari Windows
- Instalasi Docker & Docker Compose
- Verifikasi dan Testing
Instalasi WSL2
Langkah 1: Enable WSL dan Virtual Machine Platform
Buka PowerShell sebagai Administrator dan jalankan:
# Enable WSL
wsl --install
# Atau jika sudah punya WSL 1, upgrade ke WSL 2
wsl --set-default-version 2Jika belum ada distro Linux, ini akan menginstall Ubuntu secara default. Restart Windows setelah selesai.
Langkah 2: Install Ubuntu Terbaru
Setelah restart, buka PowerShell sebagai Administrator dan jalankan:
# Lihat distro yang tersedia
wsl --list --online
# Install Ubuntu (gunakan versi terbaru, contoh 24.04)
wsl --install -d Ubuntu-24.04
# Atau jika sudah ada distro, upgrade
wsl --set-version Ubuntu-24.04 2Langkah 3: Setup User dan Password WSL
Buka Ubuntu dari Start Menu (atau wsl
dari PowerShell). Tunggu setup otomatis selesai, kemudian buat user:
# Buat user baru (ganti 'your-username' dengan nama pilihan)
sudo useradd -m -s /bin/bash your-username
# Set password
sudo passwd your-username
# Tambahkan ke sudo group
sudo usermod -aG sudo your-username
# Atur sebagai default user
sudo nano /etc/wsl.confDi nano, tambahkan:
[user]
default=your-usernameTekan Ctrl+O, Enter, Ctrl+X untuk
simpan.
Keluar WSL dengan exit dan dari PowerShell:
# Restart WSL untuk apply perubahan user
wsl --shutdown
wslSetup Dasar WSL
Update System Packages
sudo apt update
sudo apt upgrade -yInstall Build Tools & Common Dependencies
sudo apt install -y \
build-essential \
curl \
wget \
git \
pkg-config \
autoconf \
automake \
libtool \
unzip \
zip \
htop \
neofetchInstalasi dan Konfigurasi Mise
Langkah 1: Install Mise
curl https://mise.jdx.dev/install.sh | sh
# Atau gunakan installer berbeda jika yang di atas error
curl -fsSL https://raw.githubusercontent.com/jdx/mise/main/install.sh | bashTambahkan mise ke PATH:
# Edit ~/.bashrc atau ~/.zshrc
nano ~/.bashrc
# Tambahkan di akhir file:
export PATH="$HOME/.local/share/mise/shims:$PATH"
eval "$(mise activate bash)"
# Simpan: Ctrl+O, Enter, Ctrl+XReload shell:
source ~/.bashrc
# atau jika menggunakan zsh:
source ~/.zshrcVerifikasi instalasi:
mise --versionLangkah 2: Install Dependencies untuk PHP (PENTING!)
⚠️ PERHATIAN PENTING: Langkah ini WAJIB dikerjakan
SEBELUM install PHP. Jangan ada yang diskip, karena error
instalasi PHP di mise HAMPIR SELALU karena missing dependencies di
sini. Kesalahan paling umum adalah melupakan re2c,
bison, dan flex.
2.1: Compiler & Build Tools (WAJIB)
sudo apt install -y \
build-essential \
autoconf \
automake \
libtool \
pkg-config \
m4 \
bison \
flex \
re2cPENTING: re2c, bison, dan
flex adalah lexer/parser generators yang
WAJIB ada untuk compile PHP dari source.
2.2: Core PHP Build Dependencies
sudo apt install -y \
php-dev \
libxml2-dev \
libssl-dev \
libcurl4-openssl-dev \
libbz2-dev \
libreadline-dev \
libedit-dev \
zlib1g-dev2.3: Image Processing (GD Library)
sudo apt install -y \
libfreetype6-dev \
libpng-dev \
libjpeg-turbo8-dev \
libwebp-dev \
libxpm-dev2.4: Text & Document Processing
sudo apt install -y \
libxslt1-dev \
libtidy-dev \
libenchant-2-dev2.5: Database & Data Storage
sudo apt install -y \
libsqlite3-dev \
libpq-dev \
unixodbc-dev2.6: Internationalization & Security
sudo apt install -y \
libicu-dev \
libsodium-dev2.7: Install Semua Sekaligus (RECOMMENDED - Jika Tidak Ingin Baca Satu-satu)
sudo apt install -y \
build-essential autoconf automake libtool pkg-config m4 bison flex re2c \
php-dev libxml2-dev libssl-dev libcurl4-openssl-dev libbz2-dev \
libreadline-dev libfreetype6-dev libpng-dev libjpeg-turbo8-dev \
libonig-dev libzip-dev libsqlite3-dev libpq-dev libicu-dev libedit-dev \
libxslt1-dev libtidy-dev libenchant-2-dev libsodium-dev libwebp-dev \
libxpm-dev unixodbc-dev zlib1g-dev2.8: Verify Semua Tools Tersedia
# Verifikasi tools kritis
re2c --version
bison --version
flex --version
gcc --versionJika ada yang tidak ditemukan, install ulang yang missing.
Langkah 3: Install Node.js Dependencies
sudo apt install -y \
nodejs-devLangkah 4: Install Python Dependencies
sudo apt install -y \
python3-dev \
python3-venv \
libffi-devLangkah 5: Konfigurasi Mise
# Init mise
mise init
# Atau jika lebih prefer langsung add tools tanpa init
cd ~ # atau ke project rootLangkah 6: Install Global Versions
# Install PHP 8.3 (akan memakan waktu karena compile dari source)
mise install php@8.3
# Jika error di PHP, PASTIKAN sudah jalankan ALL dependencies di Langkah 2
# Error yang paling umum adalah: "checking for re2c... no"
# Jika error itu muncul, jalankan: sudo apt install -y re2c bison flex
# Kemudian coba lagi
# Install dengan verbose jika ada error:
mise install php@8.3 -v
# Install Node.js 22 LTS
mise install node@22
# Install Python 3.13
mise install python@3.13
# Tunggu hingga semua selesai compile (PHP mungkin 5-15 menit)⚠️ Jika ada error saat install PHP: Lihat bagian
Troubleshooting di
bawah, terutama “Error: checking for re2c... no”
Langkah 7: Set Default Global Version
# Set PHP 8.3 sebagai global default
mise use -g php@8.3
# Set Node.js 22 sebagai global default
mise use -g node@22
# Set Python 3.13 sebagai global default
mise use -g python@3.13
# Verify
mise lsHarusnya output seperti:
Tool Version Source
node 22.x.x ~/.config/mise/config.toml
php 8.3.x ~/.config/mise/config.toml
python 3.13.x ~/.config/mise/config.toml
Langkah 8: Verify Versions
php -v
node -v
npm -v
python3 -v
pip -vLangkah 9: Install PM2 untuk Development (Optional tapi Recommended)
npm install -g pm2
pm2 completion installLangkah 10: Install Composer - PHP Package Manager
Composer adalah package manager untuk PHP, sangat penting untuk project Laravel, Symfony, dan framework PHP lainnya.
10.1: Download dan Install Composer
# Download Composer installer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# Verifikasi integritas (opsional tapi recommended)
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031fe45a4054461379220850b7 7a1f8ca7c00a8cfc9df5166b697a1841bcbf9a532c8f4ec78bc0ae16738985') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
# Install Composer ke /usr/local/bin
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
# Cleanup installer
php -r "unlink('composer-setup.php');"
# Verify installation
composer --version10.2: Setup Shell Completion untuk Composer (Optional)
# Untuk Bash
composer completion bash | sudo tee /etc/bash_completion.d/composer
# Untuk Zsh (jika menggunakan zsh)
mkdir -p ~/.zsh/completions
composer completion zsh | tee ~/.zsh/completions/_composer
# Reload shell
exec $SHELL10.3: Verify Composer Works dengan PHP
# Test basic Composer commands
composer --version
composer about
# Test dengan PHP version
composer diagnose | grep "PHP Version"Uninstall PHP/Node/Python dari Windows
Langkah 1: Uninstall dari Control Panel
- Settings → Apps → Apps & Features (atau
appwiz.cpl) - Cari dan uninstall:
- PHP (jika ada)
- Node.js
- Python
- Composer (jika direct install, bukan via PHP)
Langkah 2: Bersihkan Environment Variables
- Settings → System → Advanced system settings → Environment Variables
- Hapus atau edit PATH entries yang merujuk ke:
C:\PHPatau lokasi PHPC:\nodejsatauC:\Program Files\nodejsC:\Python*atau lokasi Python
Langkah 3: Bersihkan Registry (Opsional tapi Recommended)
# Jalankan Registry Editor sebagai Admin
regedit
# Hapus entries untuk:
# - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
# - HKEY_CURRENT_USER\SOFTWARE\...
# Cari PHP, Node, Python dan hapus yang tidak perluLangkah 4: Verifikasi
Buka PowerShell BARU (jangan lupa BARU agar PATH refresh):
# Harusnya tidak ditemukan atau 'not recognized'
php --version
node --version
python --version
# Atau jika masih ada, cari locationnya
where php
where node
where pythonInstalasi Docker & Docker Compose
Langkah 1: Update APT dan Install Dependencies
sudo apt update
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-releaseLangkah 2: Tambah Docker GPG Key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgLangkah 3: Setup Docker Repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullLangkah 4: Install Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginLangkah 5: Install Docker Compose Standalone (Opsional, untuk compatibility)
# Docker Compose plugin sudah included, tapi jika ingin standalone:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --versionLangkah 6: Setup Docker Daemon
# Buat docker group
sudo groupadd docker 2>/dev/null || true
# Tambah user ke docker group
sudo usermod -aG docker $USER
# Aktifkan group baru
newgrp docker
# Atur Docker daemon start on boot
sudo systemctl enable docker
sudo systemctl enable containerdLangkah 7: Enable Docker Desktop WSL Integration (Optional)
Jika menggunakan Docker Desktop di Windows, dari Docker Desktop → Settings → Resources → WSL integration, aktifkan distro Ubuntu Anda.
Atau gunakan Docker di WSL saja tanpa Docker Desktop (lebih lightweight).
Langkah 8: Start Docker Service
# Start service
sudo service docker start
# atau
sudo systemctl start docker
# Verify
docker ps
docker --version
docker compose versionVerifikasi dan Testing
Test PHP
php -v
php -m | grep -E "openssl|curl|gd|intl|zip"
# Test script sederhana
echo '<?php phpinfo(); ?>' > /tmp/test.php
php /tmp/test.php | head -20Test Node.js
node -v
npm -v
npm list -g --depth=0Test Python
python3 -v
pip --version
python3 -m venv /tmp/test-venvTest Docker
docker run hello-world
docker ps -aTest dengan Project Existing
Jika punya project Laravel atau Node:
# Untuk Laravel
cd /path/to/project
composer install
php artisan serve
# Untuk Node
cd /path/to/project
npm install
npm run devTroubleshooting
PHP Compilation Error saat Instalasi
Error: checking for re2c... no (PALING
UMUM!)
Ini adalah error TERBANYAK saat install PHP via
mise. re2c adalah lexer generator yang WAJIB ada.
Solusi:
# Install re2c, bison, flex (parser/lexer generators)
sudo apt install -y re2c bison flex
# Verifikasi tools tersedia
re2c --version
bison --version
flex --version
# Bersihkan cache PHP
rm -rf ~/.local/share/mise/installs/php/8.3*
rm -rf ~/.local/share/mise/downloads/*php*
# Retry install
mise install php@8.3 -vError:
Failed to install asdf:php@8.3: exit code 1
Ini biasanya disebabkan missing dependencies. Jalankan:
# Install SEMUA dependencies sekaligus
sudo apt install -y \
build-essential autoconf automake libtool pkg-config m4 bison flex re2c \
php-dev libxml2-dev libssl-dev libcurl4-openssl-dev libbz2-dev \
libreadline-dev libfreetype6-dev libpng-dev libjpeg-turbo8-dev \
libonig-dev libzip-dev libsqlite3-dev libpq-dev libicu-dev libedit-dev \
libxslt1-dev libtidy-dev libenchant-2-dev libsodium-dev libwebp-dev \
libxpm-dev unixodbc-dev zlib1g-dev
# Cleanup dan retry
mise uninstall php@8.3
mise install php@8.3 -vError:
configure: error: Cannot find OpenSSL's libraries
Solusi:
sudo apt install -y libssl-dev pkg-config
# Jika masih error, coba:
export LDFLAGS="-L/usr/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
mise install php@8.3 -vError: Package libxml-2.0 not found
Solusi:
sudo apt install -y pkg-config libxml2-dev
mise install php@8.3 -vError saat compile GD library
Solusi:
sudo apt install -y libfreetype6-dev libpng-dev libjpeg-turbo8-dev libwebp-dev libxpm-dev
# Re-install PHP
mise uninstall php@8.3
mise install php@8.3 -vError: build tools not found (autoconf, bison,
flex, etc)
Solusi:
sudo apt install -y autoconf automake libtool m4 bison flex re2c
mise uninstall php@8.3
mise install php@8.3 -vDebug dengan Verbose Output (Jika Error Tetap Muncul)
# Install dengan full logging
RUST_BACKTRACE=full mise install php@8.3 -v 2>&1 | tee php-install.log
# Cek error spesifik di log
cat php-install.log | grep -i "error\|failed\|not found" | head -20Docker Permission Denied
Error:
permission denied while trying to connect to Docker daemon
Solusi:
# Pastikan user sudah di docker group
id -nG
# Jika tidak ada 'docker', jalankan:
sudo usermod -aG docker $USER
newgrp docker
# Test
docker psMise Command Not Found
Solusi:
# Ensure ~/.bashrc/~/.zshrc sudah punya:
eval "$(mise activate bash)"
# atau
eval "$(mise activate zsh)"
# Reload shell
exec $SHELLNode_modules atau Package Issue
# Clear cache npm
npm cache clean --force
# Re-install
rm -rf node_modules package-lock.json
npm installComposer Issues
Error:
Composer could not find the openssl extension
Solusi:
# Pastikan openssl extension enabled di PHP
php -m | grep openssl
# Jika tidak ada, edit php.ini
php -i | grep "php.ini"
# Uncomment extension=openssl di php.ini
# Atau install openssl extension:
sudo apt install -y php8.3-openssl
# Test ulang
php -m | grep opensslError: Composer requires PHP > 8.2
(tapi PHP sudah correct version)
Solusi:
# Verify PHP version
php -v
# Clear Composer cache
composer clear-cache
# Re-install dependencies
composer installError:
[RuntimeException] Could not delete /path/to/vendor
Solusi:
# Clear vendor directory dan reinstall
rm -rf vendor composer.lock
composer install
# Atau jika lock file tidak boleh dihapus:
composer update --no-interactionError: Allowed memory exhausted saat composer
install
Solusi:
# Increase PHP memory limit untuk Composer
php -d memory_limit=-1 /usr/local/bin/composer install
# Atau permanent set di php.ini:
php -i | grep php.ini
sudo nano /path/to/php.ini
# Cari memory_limit dan ubah jadi:
# memory_limit = -1 (unlimited)
# atau
# memory_limit = 2GComposer slow atau timeout saat install
Solusi:
# Increase timeout
composer config process-timeout 600
# Clear cache dan retry
composer clear-cache
composer install
# Atau gunakan repository mirror (jika di Asia)
composer config -g repo.packagist composer https://packagist.jpError:
[Composer] Your requirements could not be resolved
Solusi:
# Update Composer versi terbaru dulu
composer self-update
# Jika masih error, coba update dependencies dengan more flexibility
composer update --with-all-dependencies
# Jika tetap error, cek compatibility requirement:
composer diagnoseBest Practices
1. Per-Project Version Management
Gunakan .mise.toml per project:
cd /path/to/project
mise use php@8.2 # Override global untuk project ini
mise use node@20
# .mise.toml otomatis tercreate dengan:
cat .mise.toml1.5. Composer Configuration & Optimization
Untuk project dengan Composer (Laravel, Symfony, dll):
# Verify Composer menggunakan PHP yang benar
composer -vvv diagnose | grep "php"
# Setup global Composer configuration untuk optimization
composer config -g process-timeout 600
composer config -g memory_limit -1
# Untuk faster installation di Asia, gunakan Aliyun mirror
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
# Atau gunakan Tsinghua mirror (China)
# composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/git/packagist
# List semua global config
composer config -l -g
# Per-project, gunakan .composer/auth.json untuk private repositories jika ada
# Contoh: jika ada private GitLab/GitHub, setup token di sanaTips Install Project Baru:
# Clone project
git clone <repository>
cd project
# Set PHP version untuk project ini (jika berbeda dari global)
mise use php@8.2
# Install Composer dependencies
composer install
# Verify semuanya works
php artisan --version # untuk Laravel
php bin/console --version # untuk Symfony2. Development Workflow
# Terminal 1: Backend (Laravel)
cd ~/project
php artisan serve
# Terminal 2: Frontend (Vue)
npm run dev
# Terminal 3: Docker services
docker compose up3. Backup Configuration
# Backup mise config
cp ~/.config/mise/config.toml ~/mise-config-backup.toml
# Backup WSL
wsl --export Ubuntu-24.04 ~/wsl-backup.tar4. Update Tools Regularly
# Update mise
mise self-update
# Upgrade tools
mise upgrade php
mise upgrade node
mise upgrade pythonReferensi Useful Commands
# Mise Commands
mise ls # List installed versions
mise ls -a # List all available versions
mise use node@latest # Switch version di current shell
mise use -g node@22 # Set global default
mise install node@22 # Install specific version
mise uninstall php@8.3 # Uninstall version
mise exec node@18 -- node -v # Run dengan specific version
mise implode # Uninstall semua
# Composer Commands
composer install # Install dependencies dari composer.lock
composer update # Update dependencies
composer require package/name # Install package baru
composer remove package/name # Remove package
composer dump-autoload # Regenerate autoloader
composer clear-cache # Clear Composer cache
composer self-update # Update Composer versi
composer diagnose # Check environment issues
composer config -l -g # List global configuration
# Docker Commands
docker ps # List running containers
docker ps -a # List all containers
docker images # List images
docker compose up -d # Start services in background
docker compose down # Stop services
docker compose logs -f # Follow logs
# WSL Commands (dari Windows PowerShell)
wsl --list -v # List distro
wsl --shutdown # Shutdown all
wsl -d Ubuntu-24.04 # Launch specific distro
wsl --export Ubuntu-24.04 file.tar # BackupChecklist Setup
Estimasi Waktu: 45-60 menit (tergantung kecepatan kompilasi PHP dan internet)
Last Updated: 2026-06-09 (+ Composer Installation)
Posting Komentar
oke