Saat ini saya sedang melakukan development aplikasi Forum dengan menggunakan Discourse. Stack yang digunakan Discourse sangat beragam, mulai dari Backend yang menggunakan Ruby, database PostgreSQL, dan penggunaan Redis untuk session dan cache. Untuk development yang lebih terisolasi, maka solusi dengan menggunakan Docker saya rasa akan lebih baik. Namun sayangnya, petunjuk instalasi Docker pada Discourse hanya mendukung Bash, sehingga command prompt/powershell pada Windows tidak dapat digunakan (saya menggunakan windows 10 by the way). Sehingga solusi berikutnya adalah menggunakan Windows Subsystem for Linux (WSL).
Namun sayangnya setelah anda melakukan instalasi Docker dan Docker-Compose pada WSL anda (pada kasus saya menggunakan Ubuntu) Docker tetap tidak berjalan. Akan muncul peringatan seperti di bawah ini ketika anda menjalankan Docker di WSL.
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Usut punya usut ternyata memang Docker Daemon memang tidak dapat berjalan langsung pada WSL. Untuk mengakali hal tersebut maka kita tetap harus menggunakan Docker pada Windows menggunakan Docker CLI yang terhubung melalui Remote Docker Daemon.
Requirements
Untuk dapat memudahkan anda menyamakan environment pengembangan maka informasi Stack yang saya gunakan antara lain:
- Sistem Operasi Windows 10
- Docker Desktop for Windows 2.2.0.3 (42716) Stable
- WSL dengan Ubuntu 19.10 langsung dari Microsoft Store
Untuk anda yang belum menginstall Docker Desktop silakan instalasi lewat installer Docker pada Windows. Sedangkan untuk anda yang belum melakukan instalasi WSL dapat mengunjungi link Mengenal Windows Subsystem for Linux (WSL).
Konfigurasi Docker Desktop
Agar Docker Dekstop anda dapat digunakan untuk Remote Docker Daemon maka anda harus mengubah konfigurasi Docker anda. Anda harus membuka ekspose atas daemon Docker anda tanpa TLS. Buka Setting kemudian centang pilihan Expose Daemon on tcp://localhost:2375 without TLS . Namun harap diperhatikan, membuka port ini hanya boleh dilakukan di development environment (aka lokal) saja.
Install Docker dan Docker Compose pada Bash WSL
Selanjutnya lakukan instalasi Docker dan Docker Compose pada WSL anda. Buka WSL anda dengan perintah bash
lalu jalankan perintah di bawah ini untuk menginstall Docker.
# Update the apt package list.
sudo apt-get update -y
# Install Docker's package dependencies.
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
# Download and add Docker's official public PGP key.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Verify the fingerprint.
sudo apt-key fingerprint 0EBFCD88
# Add the `stable` channel's Docker upstream repository.
#
# If you want to live on the edge, you can change "stable" below to "test" or
# "nightly". I highly recommend sticking with stable!
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# Update the apt package list (for the new apt repo).
sudo apt-get update -y
# Install the latest version of Docker CE.
sudo apt-get install -y docker-ce
# Allow your user to access the Docker CLI without needing root access.
sudo usermod -aG docker $USER
Kemudian jalankan perintah di bawah ini untuk menginstall Docker Compose
# Install Python and PIP.
sudo apt-get install -y python python-pip
# Install Docker Compose into your user's home directory.
pip install --user docker-compose
Selanjutnya pastikan $home/.local/bin
telah ada pada WSL $PATH
anda. Periksa dengan melakukan perintah berikut.
echo $PATH
Jika tidak ditemukan /home/username/.local/bin
maka tambahkan dengan perintah berikut.
nano ~/.profile
# tambahkan baris berikut pada baris terakhir
export PATH="$PATH:$HOME/.local/bin"
# jalankan perintah berikut jika telah selesai
source ~/.profile
# periksa kembali melalui $PATH
echo $PATH
Atur WSL agar terhubung ke Docker for Windows
Selanjutnya kita akan menghubungkan Docker di WSL agar membuka Docker for Windows melalui port 2375. Hal ini dilakukan dengan cara mengubah/menambah DOCKER_HOST
pada .bashrc
. Untuk melakukan hal tersebut jalankan perintah di bawah ini.
echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc
// Periksa apakah docker telah berjalan
docker info
// periksa juga docker-compose berhasil membuka remote docker daemon
docker-compose --version
Itu tadi cara mengkonfigurasi Docker pada WSL anda. Semoga bermanfaat dan Happy Coding!
Sumber:
https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly