如何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

看看这篇文章的更多信息:

http://blog.carbonfive.com/2015/03/17/docker-rails-docker-compose-together-in-your-development-workflow/

当我在旅客中跑撬时,我也有同样的问题。 尝试更改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 
Interesting Posts