0

我有一个在 Docker 容器中运行的 Rails 应用程序。我通过docker-compose up.

我让它运行我的容器并附加调试器。

但是每当我分离调试器时,整个容器都会崩溃。(退出代码 1)

它能做什么:

  • 开始docker-compose up
    • backend_1 | Fast Debugger (ruby-debug-ide 0.7.2, debase 0.2.4.1, file filtering is supported) listens on 0.0.0.0:1234
  • 在 http://localhost:3000 无法访问应用程序(我必须先附加调试器)
  • 附上一个调试器
  • 我分离调试器
  • 容器崩溃
  • 我必须server.pid手动删除(添加类似的脚本rm /app/tmp/pids/server.pid && $other_command$)不起作用。

它会做什么:

  • 启动 docker-compose
  • 应用程序应通过 http://localhost:3000 运行并可用
  • 每当需要时,我都会附加一个调试器
  • 如果不再需要调试器,只需分离调试器
  • 容器继续运行

我必须做的总是:

  • 重新运行/重启容器
  • rm -rf /app/tmp/pids/server.pid
  • 重新连接调试器

这是我的设置:

DockerCompose

services:
  backend:
    ports:
      - 3000:3000 # disabled otherwise port 3000 AND 5000 are occupied. maybe it's a bug
      - 1234:1234
      - 26162:26162
    command: sh -c "rm -f /app/tmp/pids/server.pid && bin/bundle exec rdebug-ide --debug --host 0.0.0.0 --port 1234 -- bin/bundle exec bin/rails s -p 3000 -b '0.0.0.0'"


Dockerfile

.
..
...
COPY . /usr/src/app
EXPOSE 3000 1234 26162
CMD "rm -f /rails/tmp/pids/server.pid && bin/web"

启动.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Docker",
      "type": "Ruby",
      "request": "attach",
      "remotePort": "1234",
      "remoteHost": "0.0.0.0",
      "remoteWorkspaceRoot": "/usr/src/app",
      "cwd": "${workspaceRoot}",
      "showDebuggerOutput": true
    }
  ]
}

################ after "docker-compose up" ##########################
backend_1        | Fast Debugger (ruby-debug-ide 0.7.2, debase 0.2.4.1, file filtering is supported) listens on 0.0.0.0:1234
################ docker-compose up finished ##########################
################## start attaching debugger ##########################
backend_1        | Connected from local client
backend_1        | 1: Starting control thread
backend_1        | 1: Processing in control: break /usr/src/app/app/controllers/application_controller.rb:30
backend_1        | 1: <breakpointAdded no="1" location="/usr/src/app/app/controllers/application_controller.rb:30"/>
backend_1        | 1: Processing in control: break /Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/pages/home-two.tsx:14
backend_1        | 1: <breakpointAdded no="2" location="/Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/pages/home-two.tsx:14"/>
backend_1        | 1: Processing in control: break /Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/components/home/HomePageTwo.tsx:40
backend_1        | 1: <breakpointAdded no="3" location="/Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/components/home/HomePageTwo.tsx:40"/>
backend_1        | 1: Processing in control: break /Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/components/home/HomePageTwo.tsx:46
backend_1        | 1: <breakpointAdded no="4" location="/Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/components/home/HomePageTwo.tsx:46"/>
backend_1        | 1: Processing in control: break /Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/api/shop.ts:336
backend_1        | 1: <breakpointAdded no="5" location="/Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/api/shop.ts:336"/>
backend_1        | 1: Processing in control: break /Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/api/shop.ts:374
backend_1        | 1: <breakpointAdded no="6" location="/Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/api/shop.ts:374"/>
backend_1        | 1: Processing in control: break /Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/api/shop.ts:393
backend_1        | 1: <breakpointAdded no="7" location="/Users/jan/Coding/RubymineProjects/metashop/metashop-frontend/src/api/shop.ts:393"/>
backend_1        | 1: Processing in control: start
backend_1        | 1: Starting: running program script
backend_1        | 1: Processing in control: thread list
backend_1        | 1: <threads>
backend_1        | 1: <thread id="2" status="sleep" pid="1" />
backend_1        | 1: </threads>
backend_1        | Rails Version & environment: 6.1.4.1 - development
backend_1        | => Booting Puma
backend_1        | => Rails 6.1.4.1 application starting in development
backend_1        | => Run `bin/rails server --help` for more startup options
backend_1        | Elastic URL credentials provided
backend_1        | Elasticsearch Version: {"number"=>"7.12.1", "build_flavor"=>"default", "build_type"=>"docker", "build_hash"=>"3186837139b9c6b6d23c3200870651f10d3343b7", "build_date"=>"2021-04-20T20:56:39.040728659Z", "build_snapshot"=>false, "lucene_version"=>"8.8.0", "minimum_wire_compatibility_version"=>"6.8.0", "minimum_index_compatibility_version"=>"6.0.0-beta1"}
backend_1        | Puma starting in single mode...
backend_1        | * Version 3.12.6 (ruby 2.7.2-p137), codename: Llamas in Pajamas
backend_1        | * Min threads: 1, max threads: 1
backend_1        | * Environment: development
backend_1        | * Listening on tcp://0.0.0.0:3000
backend_1        | Use Ctrl-C to stop 
############################# attaching debugger finished #############
########################## stop (detach) debugger ####################
backend_1        | 1: Processing in control: quit
backend_1        | 1: <message>finished</message>
backend_1        | 1: Exiting debugger.
development_backend_1 exited with code 1
######################## debugger detached #############################

  • 我想我必须以某种方式调整 launch.json 或 docker-compose#command 。

  • 有人有想法吗?

  • 这是通常的情况,我必须在分离调试器后重新启动容器吗?

4

0 回答 0