如何用pry在docker中调试rails应用程序?
问题描述:
我有一个rails应用程序在开发环境中的Docker容器中运行。如何用pry在docker中调试rails应用程序?
当我尝试把binding.pry
某处代码,并连接到容器我可以看到pry
提示输出调试它,但它不会暂停它,我不能与它互动就像是没有码头集装箱。
那么如何调试一个容器化的应用程序?
答
如果您使用泊坞窗,撰写,你可以将这些标志添加到docker-compose.yml
:
app:
tty: true
stdin_open: true
然后用docker attach
附加到您的流程。 pry-rails
现在在这里工作。确保您的容器上已安装less
,以获得最佳的撬体验。
cf. https://github.com/docker/compose/issues/423#issuecomment-141995398
答
我在Passenger中运行pry时遇到了同样的问题。尝试将Gemfile中的"pry-rails"
更改为gem "pry-remote"
,这将启动dRuby或不依赖于分布式协议。
如果你想停止代码执行调用"binding.remote_pry"
而不是"binding.pry"
然后,只需调用remote-pry
在控制台访问它。它应该工作一样。在你的测试环境中,只有通常的binding.pry
工作正常。
答
使用撬你必须以不同的方式运行:
docker-compose run --service-ports web
看看这篇文章的详细信息:
答
如果您不使用docker-compose
虽然,您可以简单地运行与-it
选项的容器。
例如:
docker run -v /Users/adam/Documents/Rails/Blog/:/usr/src/app -p 3000:3000 -it blog
虽然此链接可以回答这个问题,最好是在这里有答案的主要部件,并提供链接以供参考。如果链接页面更改,则仅链接答案可能会失效。 –
这个解决方案对我来说并不合适,因为我的其他服务依赖于被链接到我想要调试的这个服务的正确实例。 –