Комментарии 76
Или в конфигах писать пути без учёта регистра.
Но на практике у меня с этим проблемы бывают раз в пятилетку. Хуже переводы строк виндовые: поменяешь entrypoint.sh, не проверишь переводы строк и всё ломается, причём ошибки довольно безумные порой.
Но всё это тоже решаемо.
На самом деле у меня с WSL большие надежды, работать через Hyper-V сильно медленно.
Пути без учёта регистра — в смысле, они выстрелят уже в case-sensitive окружении? Тут ещё можно поспорить, кто в этой ситуации «плохой» :)
А вот переводы строк да, больно, регулярно натыкаюсь.
Названия веток в гите, отличающиеся только регистров, сводят гит с ума.
А через симлинк не работает?
Через симлинк работает, но только напрямую в папку проекта. Забиндить папку ~/projects
целиком не выйдет.
При этом есть минус: шторм может переписать права на файлы в папке и из wsl работать с ними будет тяжко.
Пока не завезут поддержку лучше настраивать локально и через ssh лить в wsl. Ну или использовать VS Code.
Его можно включить в конкретной директории. И для этого wsl не нужен.
wsl 2 это виртуалуа с линуксом, так что да, победили.
PhpStorm тоже умеет работать с проектами на удаленных машинах. Например, в данном случае можно попробовать открыть проект через ssh.
WSL предоставляет ssh или надо самому поднимать?
Не поленитесь и зайдите в youtrack к @jetbrains и проголосуйте за плагин к WSL 2. Они судя по всему не понимают что это киллер фича разработки на Windows. Я сам пока сижу на vscode, если привыкну — откажусь от jetbrains ideшек.
https://youtrack.jetbrains.com/issue/IDEABKL-7908
https://youtrack.jetbrains.com/issue/IDEA-171510
Камнем преткновения оказался именно шаринг кода между системами.
Вариант 1 — запускать все в файловом пространстве винды. Необходимый твик — указание юниксовых LE у git. Все работает, но ЧЕРТОВСКИ медленно. Зато IDE спокойно отрабатывает.
Вариант 2 — запускать все в файловом пространстве WSL. Для шаринга кода лучше всего использовать встроенный механизм WSL сетевого маунта. Все работает быстро, но IDE становится плохо. Никакой синхронизации файлов, проблемы с правами + сетевой маунт раз в 15 минут отваливается и PHPStorm в этот момент начинает паниковать, так как его настроечные файлы тоже исчезли без предупреждения.
Переходить на VSCode не вариант.
Так что после месяца бесплодных попыток завести все это одновременно лучшим вариантом оказалось разворачивание отдельной копии сервиса в винде для редактирования + поднятие всех остальных сервисов проекта в WSL в таком случае тормозит только один сервис >.< Но дополнительно получаем МОРЕ проблем с связями между сервисами и постоянное ручное редактирование docker-compose.yml. + Это работает если надо работать только над одним сервисом одновременно. Если надо одновременно в 2+ покопаться сложность возрастает экспоненциально.
Так что в итоге — старый добрый virtualbox. Да, он отъедает у меня 16ГБ и 8 ядер процессора только для того чтобы запуститься. Ну да и хрен с ним — у меня ещё столько же остается для хост-системы.
Мне как-то понадобилось подебажить tarantul-скрипты. Tarantul установил в WSL и рядом поставил линукс-версию идеи. На винде запустил X-сервер.
Да простят меня продвинутые пользователи линукса, как рабочая станция он — говно.
Да — макось далеко не безупречна. Да — винда тоже имеет очень много косяков. Но ни мак ни видна не приводили меня в состояние, когда я хотел бы выкинуть ноут в окно.
По этому я предпочитаю запускать приложения с которыми я непосредственно работаю как можно дальше от никсов. Почему-то даже один и тот-же mysql workbench прекрасно работет и в винде и в маке, но в убунте он крашится с завидной регулярностью без каких-либо внешних предпосылок.
В последний раз когда я пытался работать на убунте у меня абсолютно внезапно отключились ctrl+c и ctrl+v в русской раскладке. В английской работали. ctrl+insert и shift+insert работали. В русской — не работали. В попытке вернуть работоспособность я попытался установить полную поддержку русского языка в систему, в результате чего у меня перестали работать внешние мониторы. WTF?
Может я — рукожоп. Я не исключаю такую возможность. Но ни на винде ни на маке у меня таких ситуаций никогда не возникало за последние 20 лет.
С windows — если оно зависло, или если что-то не работает, то зачастую логов нет нигде. Ни в одном из разумных мест. А если есть — это несколько мегабайт текстовых файлов за один короткий раз (обновления и их cbs логи, например).
А линукс системы если зависают, либо если какой-то софт не работает, идеологически стараются вести разумные логи. И по ним проблема почти всегда решается. При этом всегда понятно, в каких местах этот лог искать.
При этом из глобальных проблем при обновлениях для линукса я помню только сломанный драйвер для gma950 (что решалось просто загрузкой прошлого ядра до момента следующего обновления). Винда же при этом иногда умудряется при обновлении себя убить (с десяткой в этом плане стало чуть лучше, она чаще молча откатывается обратно, тратя кучу времени и не выдавая разумного сообщения в конце). И это всё на разнообразных системах (и десктопах, и серверах).
Linux — норм.
При этом выполнять «стандартные офисные задачи» на Windows наоборот удобнее, чем на Linux.
Причем и на windows, и на Linux работаю в IDEA.
Я говорил о том, что исходя из моего опыта риск того, что операционная система и/или приложения необходимые для работы внезапно встанут колом прямо посередине рабочего процесса (желательно в дедлайн) несколько меньше чем у линукса.
Для работы я, на самом деле, предпочитаю мак, но прямо сейчас меня задушила жаба и вместо последнего MBP я купил себе MSI с RTX2060 на борту и очень этому рад 0=)
Если работать только с существующими контейнерами, то да, все замечательно работает. А вот сборка образов в такой конфигурации работает крайне криво.
Из-за того, что Hyper-V внезапно захватывает порты
github.com/docker/for-win/issues/3171
Нашёл это после того, как у меня отказался стартовать рабочий compose из-за того, что 8080 порт оказался захвачен после перезагрузки хоста.
В статье говорится про докер, но для него в WSL 2 она не нужна. Докер отлично ставится в WSL 2 как и в обычном дистрибутиве линукса. Собственно этим статья вводит в заблуждение.
Проверил — все верно.
Это действительно не очевидно и эта статься на Хабре вносила некоторую путаницу в этой области, так как использовала Docker for Windows которому как раз всегда был нужен полноценный Hyper V который требует Windows PRO
docs.microsoft.com/en-us/windows/wsl/wsl2-faq
Does WSL 2 use Hyper-V? Will it be available on Windows 10 Home?
WSL 2 will be available on all SKUs where WSL is currently available, including Windows 10 Home.
The newest version of WSL uses Hyper-V architecture to enable its virtualization. This architecture will be available in the 'Virtual Machine Platform' optional component. This optional component will be available on all SKUs. You can expect to see more details about this experience soon as we get closer to the WSL 2 release.
Вот совсем не понял, зачем на одной машине селить Docker и WSLЧтобы получить нормально работающий docker (и другие линуксовые утилиты/приложения, если не брать докер)
В них можно подмонтировать любые папаки с родной машиныс этим точно не всё так радужно, проблемы есть, у меня возникали даже с обычным постгресом
необходимость в linux-машине возникает только для быстрой проверки каких-то догадокзависит от языка, в том же руби нужен bundle install
Чтобы получить нормально работающий docker (и другие линуксовые утилиты/приложения, если не брать докер)
А что в винде в докере работает ненормально? Если не секрет, конечно.
с этим точно не всё так радужно, проблемы есть, у меня возникали даже с обычным постгресом
Пример покажите, пожалуйста
зависит от языка, в том же руби нужен bundle install
И что мешает сделать его в контейнере?
Я не утверждаю, что WSL не нужен. Я утверждаю, что в разрезе данной статьи он абсолютно бесполезен и бессмысленен. Что б разрабатываться в докер-контейнере достаточно Docker Desktop. При этом тот же PhpStorm работает с папкой на локальной машине, она подмонтирована в докер-контейнер на VOLUME. При необходимости — отлаживаемся при помощи xdebug. При чем тут WSL?
Вот живой пример:
При этом тот же PhpStorm работает с папкой на локальной машине, она подмонтирована в докер-контейнер на VOLUME
Даже под Линуксом при такой схеме проблемы бывают с правами на каталоги и файлы, например. Как мне помнится года два назад, когда был вынужден работать под Виндой проблем с ними было гораздо больше.
Заходим в wsl в нужную директорию 'cd /home/user/project'
, открываем проводник 'explorer.exe .'
, копируем из адресной строки путь к директории и в windows делаем символьную ссылку 'mklink /D C:\project \\wsl$\Ubuntu\home\user\project'
. После этого в IDE можно открыть проект по пути C:\project
А проблемы с доступом к файлам из wsl из-за переписывания прав вы решили? У меня после такого сценария docker-контейнеры не видят файлы, расположенные в примонтированных папках в wsl.
wsl -l -v
выдает ошибки аргументов? Параметр -v смущает
Разработка с Docker на Windows Subsystem for Linux (WSL)