Как отлаживать приложение rails, работающее внутри контейнера докеров

Я пытаюсь запустить отладчик в приложении rails, которое использует докер. Наш сервер приложений выполняется в терминале Ubuntu, используя: docker-compose up. Не нашел как запустить отладчик. Мы не можем использовать rails s --debugger. Как отладить наше приложение rails, которое интегрировано с докером. Когда я сохраняю отладчик в файле приложения, мы получаем вывод в консоли: {***** Отладчик запрошен, но недоступен (убедитесь, что ruby-debug указан в Gemfile/установлен как gem): Запустите сервер с параметром --debugger, чтобы включить * **** }


person Bharat Bhushan    schedule 02.07.2015    source источник


Ответы (1)


Я не знаю руби или рельсы, но это общая «проблема» с docker-compose up. В этом случае выполнение кода не остановится в работающем контейнере, а завершится ошибкой, когда вы нажмете точку для отладчика. Вместо этого вам нужно запустить службу на переднем плане:

docker-compose stop <my-service-to-debug>
docker-compose run --service-ports <my-service-to-debug> 

Это приведет вас к отладчику, как только ваш код достигнет этой точки. Важной частью здесь является флаг --service-ports, который гарантирует, что открыты те же порты, которые вы указали в файле docker-compose.yml. Вы также можете использовать флаг --no-deps, если вы не хотите, чтобы какие-либо связанные контейнеры перезапускались.

person Torsten Engelbrecht    schedule 07.07.2015