У меня есть типичная конфигурация компоновки докеров: пользовательский веб-контейнер и контейнер базы данных непосредственно из концентратора докеров. Для разработки мой каталог хоста монтируется в веб-докер, так что мне не нужно перестраивать контейнер каждый раз, когда выполняю небольшие изменения. Веб-сервер является Пассажиром (автономным), обслуживающим рубиновое приложение.Рабочий процесс разработки для docker-compose: запуск контейнера dev-version
Когда я запускаю его, у меня работает моя база данных, работает мой веб-сервис (на порте 3000), все хорошо. Однако, если я сделаю изменения, ничего не изменится, так как веб-сервер (пассажир) должен быть перезапущен. Я хотел бы иметь возможность запускать простой легкий сервер разработки, такой как thin
, что я перезапустил бы вручную, когда я сделаю изменение.
Что я пробовал:
- Запуск нового веб-контейнер (
docker-compose run web ...
) не предоставляет какой-либо порт для нового контейнера. Таким образом, я не могу подключиться к веб-серверу. - Запуск нового контейнера с докерером напрямую (
docker run web -p 5000:5000 image_name ...
). Мы теряем функциональность компоновки докеров, контейнер не связан с базой данных без ручных привязок. - Повторное создание докеры-составления каждый раз (по мере его запуска). Каждый раз, когда моя база данных перезагружается настолько пустым, мне нужно продолжать работать.
- Использование
--service-ports
агд: не работают, как порт 3000 уже используется docker exec
мой Dev сервер на веб-контейнере: должен работать на другом порту, так что не будет подвергаться воздействию.docker exec
kill
моего веб-сервера: на самом деле это работает (перезапускается), но мне не очень нравится это решение. Во-первых, поскольку сервер все еще является Пассажиром, где я бы предпочел легкий веб-сервер (какthin
). Во-вторых, я считаю, что не очень просто подключиться к серверу с помощьюdocker exec ...
.- Изменение моего
Dockerfile
для замены пассажира на веб-сервере автоматической перезагрузки dev: мне нравитсяDockerfile
быть таким же, как на prod-сервере, тестах и dev.
У вас будет чистый и простой способ запуска моего веб-контейнера с открытым портом 5000, на котором я бы включил запуск/перезапуск веб-сервера dev?
Я только что переехал весь исходный код в контейнер данных, который экспортируется с помощью SMB к разработчику. Я написал Docker Shell для этой цели - http://dockershell.io/. – mzedeler