如何debugging与撬码在docker的应用程序?
我有一个rails应用程序在开发环境中的Docker容器中运行。
当我尝试在代码中的某处放置binding.pry
进行debugging并附加到容器时,我可以在输出中看到pry
提示符,但它不会暂停,并且不能像docker那样与其交互容器。
那么如何debugging一个容器化的应用程序呢?
如果您使用的是docker-compose,则可以将这些标志添加到docker-compose.yml
:
app: tty: true stdin_open: true
然后用docker attach
附加到你的进程。 pry-rails
现在在这里工作。 确保在您的容器上安装less
的撬棒体验。
比照 https://github.com/docker/compose/issues/423#issuecomment-141995398
使用撬你必须以不同的方式运行:
docker-compose run --service-ports web
看看这篇文章的更多信息:
当我在旅客中跑撬时,我也有同样的问题。 尝试更改Gemfile中的“pry "pry-rails"
以gem "pry-remote"
pry gem "pry-remote"
,它将启动一个dRuby或分布式协议而不依赖于它。
如果您想停止执行代码,请调用"binding.remote_pry"
而不是"binding.pry"
然后在控制台中调用remote-pry
来访问它。 它应该工作一样。 在你的testing环境中,只有通常的binding.pry
工作正常。
如果你不使用docker-compose
,你可以简单地使用-it
选项运行容器。
例如:
docker run -v /Users/adam/Documents/Rails/Blog/:/usr/src/app -p 3000:3000 -it blog