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:

  1. Sistem Operasi Windows 10
  2. Docker Desktop for Windows 2.2.0.3 (42716) Stable
  3. 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