Разработка в Windows 10 под Linux с Docker?
=============================================

 Предпочитаю Windows линуксу по множеству причин (MS Office, Adobe, игры, удобный интерфейс и т.п.). Раньше пробовал WSL, в принципе довольно рабочий способ, правда было пару недостатков: медленное I/O (где-то раза в 3), проблемы с переносом строк (/r/n - решалось конфигурацией git'a на винде), ну и возможно были бы проблемы с правами на файлы, но не столкнулся с этим.  

В данный момент работаю на Ubuntu. Сталкиваюсь с разными проектами (PHP Symfony), где нужно разное окружение. В итоге начал смотреть в сторону Docker. И сразу же потянуло обратно на винду.  
  

Подскажите пожалуйста, опытные разработчики, хорошая ли это затея?) Я так понимаю Docker позиционирует себя как кроссплатформенное решение, значит такое вполне себе возможно?  
  

Долго искал в инете гид как настроить LEMP + Symfony 4 и PHPStrom, так и не нашел подробного объяснения. Появилось кучу вопросов:  
* Сейчас вообще не представляю как должны шарится исходники проекта (в офиц документации docker для windows говорится, что не рекомендуется держать шареные папки на хост-машине: "If possible, avoid volume mounts from the Windows host, and instead mount on the Linux VM, or use a data volume (named volume) or data container."). Тогда где хранить исходники, конфиги и данные БД?
* Выполнять консольные команды Symfony, git, composer нужно в докер контейнерах? Если да, то как это настроить в PHPStorm? Я правильно понимаю, что на хост-машине, где установлен докер, ничего кроме докера по сути не должно быть (ну кроме IDE и пр.)?
* Ну и наверное главное: если я буду редактировать исходники с Windows PHPStorm, что случится с моими файлами (переносы строк, права на папки и пр.). Если вы такое пробовали, с какими проблемами столкнулись и как их избежать?

  
  

Сорри за длинный текст, мне кажется тема интересная для многих) Все-таки от винды не откажешься так или иначе) 

 Просто поставьте себе [VirtualBox](https://www.virtualbox.org). Делаете один раз базовую настройку нужной версии нужной ОС. Далее делаете нужное количество клонов ОС в один клик для нужных вариантов рабочего окружения. И далее используете нужную ОС. Как виртуалка сломается — делаете новый клон с чистой ОС. 

 В разработке под пхп онли проблем не будет.  
  

Под пхп дата волюмы надо только для бд использовать, потому что если под виндой примонтировать бд в папку, то например постгре даже не стартанет, либо если специфичные права нужны.  

В шторме есть поддержка докера, но там все очень неудобное и странное, лучше портейнер использовать, там все просто, удобно и наглядно. Гит команды на хосте, остальное в контейнере запускать.  

С правами проблемы, если примонтирована папка и нужные особые права, поскольку их изменить не выйдет. С переносами да, в исходниках это неакутально, а вот башевские скрипты и разные env проблем могут доставить, но это легко решается если залезть в настройки ide.  
  

В виндовс есть более серьезные проблемы, например нет поддержки fs.notify, то есть хот релоад в гоу/js/любой другой язык, работать не будут. Докер требует включенные hyper-v, эмулятор андроид студии требует его выключить(а для этого нужна перезагрузка), то есть под виндой адекватно развернуть бэк в докере и смотреть результат в симуляторе не выйдет, есть правда решение в лице отстойного симулятора от микрософта. Геморрой с ресурсами, если есть какой-то хорошо жрущий контейнер, хрен настроишь его работу. Разные специфичные имеджи с докер хаба тоже работать не будут либо будут выдавать странные ошибки.  
  

Касательно отказа от винды, я последний раз винду запускал года полтора тому назад. Популярные игры прекрасно работают и под линукс, если игра есть под мак, она с вероятностью 90% будет и под линукс. Если так сильно винда нужна, то есть вайн либо можно виртуалку поднять. 

 Тут уж скорее Vagrant а не Docker (и даже быстрее, чем WSL, несмотря на то, что Vagrant использует полноценную виртуальную машину в отличие от WSL).  
  

Именно Vagrant и предназначен для быстрого подъема среды разработки. Похож на Docker в кое-чем (например, также через один единственный файл конфигурится Vagrantfile, почти Dockerfile; также в конфигурационном файле можно указать все необходимое ПО).  
  

Если поищите в <https://app.vagrantup.com/boxes/search,> то наверняка с готовым стеком LEMP найдете. PHPStorm, разумеется, должен быть под родным GUI, а не внутри виртуалки.  
  

Да, Windows/MacOS на голову выше по удобству GUI, чем Linux, вам не кажется.  
  

Даже работая на Ubuntu вполне имело смысл создавать полностью изолированную среду для запуска/отладки, чтобы избежать трудноуловимых глюков при переезде проекта на сервер (из-за неидентичности окружения, прежде всего библиотек; из-за различия в версиях - и для PHP как раз подобные проблемы встречаются нередко).   
  

Так что использовать Docker/Vagrant вполне себе разумно, неважно где вы при этом работаете на Windows/MacOS/Linux.  
  

Однако, конкретно Docker представляется неудобным. Вы хотите его прикрутить для задач, для которых он не предназначен изначально. Концепция Docker подразумевает, что ПО стабильно и находится в контейнере. Меняются только данные, что подключены через volume. Прикрутить конечно можно, но...