Розробка з Docker на Windows Subsystem for Linux (WSL)
Для повноцінної роботи з проектом на docker'і у WSL необхідна установка WSL 2. На момент написання нотатки її використання можливе лише в рамках участі у програмі попередньої оцінки Windows (WSL 2 доступна у збірках 18932 і вище). Також окремо варто згадати, що необхідна версія Windows 10 Pro для встановлення та налаштування Docker Desktop.
Перші кроки
Після вступу до програми попередньої оцінки та встановлення оновлень необхідно встановити дистрибутив Linux (в даному прикладі використовується Ubuntu 18.04) та Docker Desktop з WSL 2 Tech Preview:
Після цього необхідно переконатися, що ми будемо використовувати WSL v2. Для цього в терміналі WSL або PowerShell послідовно виконуємо команди:
wsl -l -v - Дивимося, яка версія встановлена на даний момент. Якщо 1, то рухаємось далі за списком
wsl --set-version ubuntu 18.04 2 — для оновлення до версії 2
wsl -s ubuntu 18.04 — встановлюємо Ubuntu 18.04 як дистрибутив за замовчуванням
Тепер можна запустити Ubuntu 18.04, провести налаштування (вказати ім'я користувача та пароль).
Встановлення Docker Desktop
У процесі встановлення слідуємо вказівкам. Комп'ютер потребує перезапуску після інсталяції та при першому запуску для увімкнення Hyper-V (через підтримку якого і потрібна версія Windows 10 Pro).
Важливо! Якщо Docker Desktop повідомить про блокування з боку firewall'у, йдемо в налаштування антивіруса і вносимо наступні зміни до правил мережного екрану (в даному прикладі як антивірус використовується Kaspersky Total Security):
Проходимо в Налаштування -> Захист -> Мережевий екран -> Налаштувати пакетні правила -> Local Service (TCP) -> Змінити
Зі списку локальних портів видаляємо порт 445
Зберегти
Після запуску Docker Desktop у контекстному меню вибираємо пункт WSL 2 Tech Preview.
У вікні, натискаємо кнопку Start.
Тепер docker та docker-compose доступні всередині дистрибутива WSL.
Важливо! В оновленому Docker Desktop тепер вкладка з WSL всередині вікна налаштувань. Там вмикається підтримка WSL.
Важливо! Крім галочки активації WSL також необхідно у вкладці Resources->WSL Integration активувати Ваш дистрибутив WSL.
запуск
Несподіванкою стали ті проблеми, які виникли при спробі підняти контейнери проектів, розташованих у директорії користувача Windows.
Помилки різного роду, пов'язані із запуском bash-скриптів (які зазвичай стартують при складанні контейнерів для встановлення необхідних бібліотек та дистрибутивів) та інших, звичайних для розробки на Linux, речей, змусили задуматися про розміщення проектів безпосередньо в директорії користувача Ubuntu 18.04.
.
Із вирішення попередньої проблеми випливає така: як працювати з файлами проекту через IDE, встановлену на Windows. Як "best practice" я знайшов для себе тільки один варіант - робота за допомогою VSCode (хоча є шанувальником PhpStorm).
Після встановлення вищезазначеного розширення досить просто виконати команду code . у директорії проекту при запущеній VSCode.
У цьому прикладі для звернення до контейнерів через браузер необхідний nginx. Встановити його через sudo apt-get install nginx виявилося не так просто. Для початку потрібно оновити дистрибутив WSL за допомогою виконання sudo apt update && sudo apt dist-upgrade, і тільки після цього запустити інсталяцію nginx.
Важливо! Всі локальні домени прописуються не у файлі /etc/hosts дистрибутива Linux (його там навіть немає), а у файлі hosts (зазвичай розташованому C:WindowsSystem32driversetchosts) Windows 10.
Джерела
Більш детальний опис кожного кроку можна знайти тут: