Я разрабатываю в основном с помощью Visual Studio на Windows. Проблема в том, что через некоторое время Windows зависает, и мне приходится переустанавливать Windows. Аналогичным образом, переход на новые машины является проблемой.
Переустановка Windows болезненна, потому что моя среда разработки имеет много зависимостей (таких как дополнительные файлы конфигурации MSBuild, расширения VS, npm, Java и т. Д.). Я не думаю, что я одинок в том, чтобы иметь сложную систему, и ее восстановление, вероятно, заняло бы минимум дня.
Я на самом деле не использовал Docker, но теоретически это звучит так, как будто я могу настроить свою среду разработки в контейнере Windows, а затем просто отправить ее (например, скопировать на свой ноутбук, вставить новую установку Windows), и это должно быть безболезненно ,
Возможно ли то, что я описываю? Есть ли недостатки, такие как производительность, надежность? Другие ошибки?
Ответы:
Это не редкая проблема, но Docker на самом деле не самый подходящий инструмент для ее решения. Контейнеры в целом (включая Docker) предназначены для обеспечения времени выполнения приложения для одного процесса , такого как веб-сервер, а не для многопроцессного сценария, такого как среда разработки. В может быть сделано, но это не очень элегантное решение.
Лучшим (и более распространенным) подходом является создание виртуальных машин с помощью традиционного гипервизора, такого как VirtualBox или Hyper-V (поскольку вы работаете в Windows). Типичный рабочий процесс:
Vagrant также является фантастическим инструментом для выполнения большей части вышеперечисленного в более структурированной форме.
Дополнительным преимуществом всего этого является то, что теперь у вас есть стандартизированные среды, которыми вы можете поделиться со всей вашей командой, что экономит усилия каждого. Это особенно хорошо для быстрого освоения новых людей.
Возвращаясь к исходному вопросу, Docker на самом деле не предназначен для этого, но если бы у вас была достаточно маленькая среда разработки (скажем, PHP на Linux), вы могли бы сделать это в контейнере, и выгода была бы в гораздо меньшем размере изображения (потенциально до 100 МБ против многих ГБ для виртуальной машины Windows с виртуальным диском).
источник
не в одном docker-контейнере, а yes в n-док-контейнерах.
Хотя теоретически вы можете собрать всю свою среду разработки в одном контейнере, Docker не предназначен для этого.
Вместо этого вам следует развертывать каждый сервис в отдельных контейнерах, используя docker compose , управлять всей инфраструктурой в одном файле, где у каждого сервиса будет свой собственный файл журнала, пространство пользователя, сеть и т. Д.
Позвольте привести пример, это черновик моего
docker-compose.yml
Существует прокси-сервер nginx (myproxy), две аналогичные базы данных postgres (mydb1 и 2), старый сервер веб-приложений java (www), контейнер java jetty, который предоставляет веб-службу отдыха, и, наконец, очень простой контейнер SMTP-постфикса.
Все запускается - обычно :) - с
docker-compose up
, либо на моей машине разработчика или в производстве; файлы журналов объединяются в один легко читаемый файл, и можно локально реплицировать почти все функции с гарантией того, что, если он будет работать на моем ноутбуке, он будет работать.источник
Я использую виртуальные машины VirtualBox для такого рода вещей.
Переносимость создания вашей среды разработки в контейнере удобна, но по-настоящему приятно то, что я могу сделать снимок перед любыми попытками обновления, и, если я его испорчу, нет проблем вернуться к началу и начать заново.
Я также считаю это полезным, потому что я часто работаю с несколькими версиями таких вещей, как Qt, и мне не хочется выяснять, как заставить две версии сосуществовать - вместо этого я просто помещаю их на разные виртуальные машины и Мне не нужно беспокоиться о взаимодействии, потому что я установил что-то неправильно.
источник