Задать вопрос
Ответы пользователя по тегу Docker
  • Есть проблемка с symlinks... Как деплоить с минимальным downtime?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Деплой в каталог по номеру выполняемой задачи
    2. Выполнить скрипты подготовки деплоя приложения
    3. Удалить симлинк на текущую версию проекта
    4. Создать новый симлинк на свежую версию
    5. Выполнить скрипты завершения деплоя приложения

    А если запустить два-три инстанса приложения - то можно их обновлять по очереди и без полной остановки проекта. Само собой если в коде проекта допускается работа в несколько инстансов.
    Ну и если что-то пойдёт не так - можно быстро откатить версию.
    Ответ написан
  • Как упростить и убыстрить процесс переноса правок с docker на прод?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    То, что вам нужно называется "автоматизация доставки и развёртывания". CI/CD и прочее. На вашем сервере один раз настраиваете деплой с гит-репозитория и далее просто вносите ваши изменения в репозиторий, а дальше по скрипту всё само задеплоится. Только не забудьте настроить и отладить процесс отката изменений на любую другую версию.
    Ответ написан
    4 комментария
  • Как сделать субдомен, и отдельную БД для каждой пользователя с миграциями laravel, docker?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Домен настраиваете согласно документации на ваш веб-сервер, а так же DNS сервер/провайдера. Управление отдельной БД для каждого пользователя реализуете в рамках логики вашего приложения. Конкретный механизм реализации зависит от вашего проекта, его требований и особенностей. Докер - это часть инфраструктуры, каких-то специфических настроек не требует для реализации данной задачи. Вот миграции - тут несколько сложнее и зависит от структуры БД и логики вашего проекта. Может как повторять структуру основной БД так и иметь свою отдельную структуру. Соответственно и миграции - либо в всё в одной куче либо отдельные кучки.
    Ответ написан
    5 комментариев
  • Как лучше реализовать контейнеры для теста и прода?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Лучше для чего именно? Сейчас у вас всё работает нормально и проблем нет? Значит и нечего тут менять. Есть какая-то проблема? Тогда озвучивайте свою конкретную проблему и тогда уже можно будет думать как её решить с минимальными усилиями.

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

    При переходе где, откуда и куда? Остановить тестовый контейнер и запустить продакшен? Ну так у вас же уже есть два отдельных контейнера - просто заранее делаете сборку, а уже потом запускаете что надо и когда надо. В целом логика обычно такая: делается базовый контейнер с нужными зависимостями, далее на базе этого контейнера собираются остальные - тестовый, стэйж, прод со своими отдельными зависимостями. Далее уже зависит от логики вашего приложения и его особенностей - к контейнеру монтируется внешний каталог с ресурсами или приложением, либо собирается финальный контейнер вместе с вашим приложением полностью внутри него.
    Ответ написан
  • Какой лучший способ размещения сайта на сервере?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    для удобной поддержки и масштабируемости

    Приведённые варианты на это практически никак не влияют. При масштабировании используется максимальная автоматизация всего и вся - так что тут без разницы как именно запущен веб сервер. И то и другое автоматизируется одинаково хорошо. На настройку nginx это тоже не влияет никак - конфиг в обоих случаях будет либо в гит-репозитории лежать либо где-то в веб-интерфейсе системы автоматизации развёртывания ПО. Важнее - как именно организовано сопровождение веб-сервера и удобство его управлением.
    Ответ написан
    Комментировать
  • Возможно ли, чтобы запущенный Docker контейнер не содержал скомпилированных файлов NodeJS приложения?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Потому что JS не нужна компиляция, т.к. это интерпретируемый ЯП. Вики
    npm run build - это просто команда сборки, которая применяется для всяких type-script, минификации файлов для фронт-энда, компиляции бинарных зависимостей, которые как раз могут быть написаны на уже компилируемом С++ или любом другом ЯП, и всего такого прочего.
    Ответ написан
  • Существует ли возможность комфортной работы в связке Docker+Windows+WSL2+Vite?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    https://www.virtualbox.org/ - намного более удобная и функциональная система виртуализации. Создаёте виртуалку с линуксом, там же ставите докер и спокойно работаете с ней через SSH. Если ваш редактор кода не поддерживает SSH - то можно просто расшарить линуксовую ФС и спокойно с ней работать из под винды по стандартным сетевым протоколам типа самбы.
    Ответ написан
    1 комментарий
  • Как обратиться к docker-контейнеру, размещенному в vm ubuntu, с хоcт машины windows?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Если вам не нужен именно нат, то используйте мост для коннекта по сети - так намного проще, т.к. виртуалка сразу становится доступна в сети хоста по IP. Если нужен именно нат - для начала проверьте, что между виртуалкой и хостом работает правильно проброс порта, далее проверьте правильность работы проброса между контейнером и самой виртуалкой на правильном интерфейсе.
    Ответ написан
    Комментировать
  • Как создать образ докер для чтения input?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Данный скрипт нужно запускать на пк, где нет пайтона и пр.
    Поискал решения и наткнулся на docker, изучение и чтение куче статей не дают понять, правильный ли я метод выбрал?

    Нет, неправильный. Правильное решение будет:
    • Указать в ридми/мануале скрипта его зависимости
    • Попросить пользователя установить питон нужной версии при установке
    • Предложить установить питон нужной версии автоматически при установке
    • Распространять вместе со скриптом портативную версию питона нужной версии
    Ответ написан
    Комментировать
  • Почему медленно идет распаковка архива в Docker контейнере?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Поставьте себе VirtualBox, в нём сделайте виртуалку с любым линуксом (например дебиан), а уже в линуксе используйте докер. Это самое простое и удобное решение.
    Ответ написан
    Комментировать
  • Как получить удалённый доступ к http контейнеру?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    В данном случае правильнее будет:
    1. Создать для каждого проекта свой репозиторий
    2. Настроить логирование, сборку, запуск и остановку проектов в режиме разработки
    3. В процессе разработки вытягивать обновления из репозиториев и перезапускать проекты
    Ответ написан
    Комментировать
  • Как одновременно работать с одной папкой двум копиям приложения?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    В данном случае проще всего будет просто связать оба инстанса друг с другом и использовать второй инстас как резервный. Например через банальную проверку друг друга по сети запросом каким-нибудь. Один инстанс работает, а другой проверяет, что первый инстанс работает верно. Если первый инстанс не отвечает, висит, сломался и т.п. - в работу включается второй и где-нибудь ставит флаг/файл/что угодно и как, что теперь он основной, а первый - резервный будет, когда заработает и отправляет сообщение ответственному.

    Чуть более сложный вариант: использовать, например, редис для хранения состояния процесса работы и через него синхронизировать инстансы. Например: первый сервис определил для себя задачу и сообщает об этом второму, что он взял такую-то задачу или такие-то файлы. Соответственно второй сервис эти файлы не трогает. Или, оба инстанса смотрят в каталог, как только что-то обнаруживают - помещают в очередь задач. А при появлении задачи в очереди - оба сервер генерируют случайно число и так выбирают кто из них возьмет следующую задачу из очереди. Т.о. можно, этих инстансов наплодить сколько угодно.

    Более правильный вариант: разделить функционально вашу задачу на несколько более простых. А именно: вместо проверки каталога, запустить на том сервере, где находится данный каталог с файлами сервис наблюдения ФС, который использует системные уведомления об изменениях файловой системы. И при наступлении нужных событий - отправляет запрос в очередь на обработку, например в тот же редис, а оттуда запрос забирает один из инстансов и обрабатывает его.
    Ответ написан
  • Как реализовать возможность запускать пользовательский код на сервере и отдавать результат?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Проще всего поискать готовые решения и либо использовать их либо посмотреть на реализацию и сделать по аналогии. А так - использовать Docker или любой аналог. Ставим на сервер докер, настраиваем отдельные контейнеры для каждого ЯП с максимальной изоляцией от ОС и хостовой ОС (например ограничить интернет, запретить запуск системных приложений и прочее). Полученный от пользователя код передаем в контейнер, например как файл в примонтированном каталоге, запускаем скрипт для выполнения кода, сохраняем результат и возвращаем его пользователю.
    Ответ написан
    1 комментарий
  • Зачем в образ docker в качестве первого слоя устанавливают linux дистрибутив?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Затем, что линукс самая распространённая серверная ОС и докер в основном применяется на серверах и разработчиками серверного/сетевого ПО. Кроме того, как уже правильно сказали про контейнерезацию винды, есть еще и другие ОС: например FreeBSD. Там тоже есть контейнеризация и вирутализация, например - jails, точно так же позволяет запускать контейнеры с FreeBSD внутри и ставить там эксперименты или запускать различное ПО. И есть еще куча других инструментов. А суть контейнеризации проста: поставить конкретные зависимости для конкретного ПО и легко ими управлять, при этом не влияя на хостовую ОС и не получая от неё же влияние. Что проще - запустить один настроенный докер контейнер или же выполнить кучу команд и поставить кучу дополнительного софта, который может оказаться несовместим с текущей конфигурацией?
    Ответ написан
    Комментировать
  • Docker соединяет frontend и backend?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Можно с докером, можно без. Можно раздельно, можно вместе. По-разному можно, в общем.
    Ответ написан
    Комментировать
  • Можно ли использовать docker на виртуальное машине VirtualBox?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, можно, например в VirtualBox все работает без проблем.
    Ответ написан
    Комментировать
  • Как работает docker на MacBook с m1?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    На М1 работает отлично: десяток-полтора контейнеров перевариваются вполне нормально. Все запускается, работает как надо. Да, х86 виртуализация работает медленно - но тут ничего не поделать, хост все же арм. Если нужна максимально быстрая виртуализация х86 - надо использовать х86 машину с линуксом или виндой.
    Ответ написан
    Комментировать
  • Разработка в Windows 10 под Linux с Docker?

    VoidVolker
    @VoidVolker Куратор тега Windows
    Dark side eye. А у нас печеньки! А у вас?
    Просто поставьте себе VirtualBox. Делаете один раз базовую настройку нужной версии нужной ОС. Далее делаете нужное количество клонов ОС в один клик для нужных вариантов рабочего окружения. И далее используете нужную ОС. Как виртуалка сломается — делаете новый клон с чистой ОС.
    Ответ написан
    Комментировать
  • Как исправить ошибку при создании образа?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Прежде чем создавать топик на ресурсе, посвященному вопросам, почитайте пожалуйста очень полезную статью "Как правильно задавать вопросы. ", подтяните немного знания по русскому языку и попробуйте еще раз задать свой вопрос в более осмысленной формулировке.
    Ответ написан
    2 комментария