0

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:1234http://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?
  • 这甚至可能吗?
4

1 回答 1

0

遵循此处此处发现的类似问题,我可以提出以下建议:

  1. 清除浏览器缓存并重新启动浏览器。
  2. 确保您使用的是 HTTP 而不是 HTTPS。
  3. 更改为 false 或注释行:config.force_ssl = true在文件中config/environments/production.rb
于 2021-12-27T08:41:27.303 回答