Solution for Docker performance improvement

Truong, articles

Check out the step by step tutorial below to configure:

This configuration allows Docker to run really fast. Instead of waiting 60 seconds, now the browser request will run faster than 1 second!

Step 1: ENABLE WSL2 on Windows

A. Enable WSL 2 on your Windows

B. Install Linux on Windows 10 (Ubuntu 20.04 LTS from Microsoft store)

C. Enable WSL 2 on Ubuntu 20.04

D. Install Docker Desktop

E. Enable WSL 2 for Docker

More info:

Step 2: Install SSH on Ubuntu

We want to enable SSH connection to Ubuntu and we will be using it for local files’ “deployment”. Our goal here is:

– We have a GIT project cloned on the main Windows hard drive (SSD)

– We’re developing using PHPStorm

– PHPStorm Files’ deployment is configured in a way to automatically send files to Ubuntu.

– With this setup, we will instantly see the changes to our code in the browser.

How to configure SSH on Ubuntu:

Step 3: Configure PHPStorm Deployment

A. File / Settings / Build, Execution, Deployment – Deployment

B. Click + (to add a new deployment config) – choose SFTP

C. Fill in ‘SSH configuration’

– Host: your Ubuntu public IP (to find the proper IP address, type the following command in your Ubuntu: ip a)

– User name: your ubuntu username

– Authentication type: Password

– Password: your ubuntu pass

D. Set proper directories mapping in: Deployment / Mappings

E. Deployment / Options: – find the option ‘Upload change files automatically to the default server’ and set to ‘Always’

Step 4: ssh to Ubuntu, run Docker

A. Open your SSH Client (ex: Cmder ) and connect to Ubuntu using SSH connection:

$ ssh myusername@

(use your Ubuntu credentials here, we were using the ones in PHPStorm Deployment configuration)

B. Log in to the root account:

$ sudo su

C. Run Docker:

$ docker-compose up -d

Step 5: Connect to the database

A. Log into your Docker container:

$ docker exec -it myproject_php bash
$ cd /var/www/html/public/

B. Download MYSQL Client:

$ wget

C. Find database credentials (in Docker configuration files), ex:


C. Open the following link in the browser: http://localhost/adminer-4.7.7-mysql.php

Server: mysql
Username: root
Password: mypass
Database name: mydatabasename


– always use Ubuntu being logged in as a root:

$ sudo su

– Run Powershell or the SSH Client using the ‘Run as administrator’ option

sudo su
apt install openssh-server
service ssh start
service ssh status

If you get the following error: sshd: no hostkeys available – exiting :

If you get the following error: Permission denied (publickey):

nano /etc/ssh/sshd_config

Find: PasswordAuthentication Set it to: yes #and then restart the ssh service: service ssh restart

To Enable Hyper-V Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

To Disable Hyper-V Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All 1

$hyperv = Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online
if($hyperv.State -eq “Enabled”) {
Write-Host “Hyper-V is enabled.”
} else {
Write-Host “Hyper-V is disabled.”
© TruongIdeas & Feedback