我有一个在 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 。
有人有想法吗?
这是通常的情况,我必须在分离调试器后重新启动容器吗?