Minikube
我尝试为在Kubernetes集群中运行的 Ruby on Rails API 应用程序设置 VSCode 或 Intellij 调试器。
当我尝试启动调试会话时,容器会抛出此错误:
HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>
宝石文件
group :development, :test do
gem 'debase'
gem 'ruby-debug-ide'
end
我的 Dockerfile CMD
:
COPY . /usr/src/app
EXPOSE 3000 1234 26162
CMD "bin/bundle exec rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails server -p 3000 -b 0.0.0.0"
这是我的launch.json
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Docker",
"type": "Ruby",
"request": "attach",
"remoteHost": "127.0.0.1",
"remotePort": "1234",
"remoteWorkspaceRoot": "/usr/src/app",
"cwd": "${workspaceRoot}",
"showDebuggerOutput": true
}
]
kind: Service
metadata:
annotations: {}
labels:
app: backend
name: backend
spec:
type: ClusterIP
ports:
- name: "3000"
protocol: TCP
port: 3000
targetPort: 3000
- name: "1234"
protocol: TCP
port: 1234
targetPort: 1234
selector:
app: backend
我还配置了一个入口。
我http://localhost:1234
也http://localhost:3000
可以使用http://myhost.test调用我的应用程序并获得 json 响应(应该如此)。
这是我启动一个新容器并运行一次 VSCode 调试器时的容器日志:(查看最后一行)
### STARTING ###
Puma starting in single mode...
* Version 3.12.6 (ruby 2.7.2-p137), codename: Llamas in Pajamas
* Min threads: 1, max threads: 1
* Environment: development
Rails Version & environment: 6.1.4.1 - development
Elastic URL credentials provided
Elasticsearch Version: {"number"=>"7.16.2", "build_flavor"=>"default", "build_type"=>"docker", "build_hash"=>"2b937c44140b6559905130a8650c64dbd0879cfb", "build_date"=>"2021-12-18T19:42:46.604893745Z", "build_snapshot"=>false, "lucene_version"=>"8.10.1", "minimum_wire_compatibility_version"=>"6.8.0", "minimum_index_compatibility_version"=>"6.0.0-beta1"}
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
2021-12-26 00:19:34 +0000: HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>
问题:
- 我的错误配置在哪里
- 我错过了什么吗?
- 这是正确的方法吗?
- 我需要额外的端口转发吗?
- 还是一些 ENV_VARS?
- 这甚至可能吗?