@adiletmurzaliev

Разработка в 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, что случится с моими файлами (переносы строк, права на папки и пр.). Если вы такое пробовали, с какими проблемами столкнулись и как их избежать?


Сорри за длинный текст, мне кажется тема интересная для многих) Все-таки от винды не откажешься так или иначе)
  • Вопрос задан
  • 1202 просмотра
Пригласить эксперта
Ответы на вопрос 3
VoidVolker
@VoidVolker
Просто поставьте себе VirtualBox. Делаете один раз базовую настройку нужной версии нужной ОС. Далее делаете нужное количество клонов ОС в один клик для нужных вариантов рабочего окружения. И далее используете нужную ОС. Как виртуалка сломается — делаете новый клон с чистой ОС.
Ответ написан
@grinat
В разработке под пхп онли проблем не будет.

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

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

Касательно отказа от винды, я последний раз винду запускал года полтора тому назад. Популярные игры прекрасно работают и под линукс, если игра есть под мак, она с вероятностью 90% будет и под линукс. Если так сильно винда нужна, то есть вайн либо можно виртуалку поднять.
Ответ написан
@yayashitoya
Тут уж скорее 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. Прикрутить конечно можно, но...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
deeplay Новосибирск
от 150 000 ₽
IT Smart Finance Новосибирск
от 90 000 ₽
24 февр. 2021, в 21:39
30000 руб./за проект
24 февр. 2021, в 21:30
7000 руб./за проект