You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

容器化运行Falcon Web Server时遭遇process/metrics依赖加载错误

问题:容器化运行Falcon Web Server时出现process/metrics依赖加载失败

我尝试通过以下Dockerfile构建容器运行Falcon Web Server:

FROM docker.io/library/ruby:3.1.2 AS build-stage

COPY Gemfile .
COPY Gemfile.lock .

RUN bundle install 

WORKDIR /app

COPY . .

CMD falcon host

我的falcon.rb配置文件内容如下:

#!/usr/bin/env -S falcon host
# frozen_string_literal: true

load :rack, :supervisor

rack 'localhost' do
    endpoint Async::HTTP::Endpoint
        .parse('http://0.0.0.0:3001')
end

supervisor

启动容器时出现如下错误信息:

{"time":"2022-12-02T14:29:44+00:00","severity":"info","class":"Falcon::Command::Host","oid":2680,"pid":2,"subject":"Falcon::Command::Host","message":"Falcon Host v0.42.3 taking flight!\n- Configuration: falcon.rb\n- To terminate: Ctrl-C or kill 2\n- To reload: kill -HUP 2\n"}
/usr/local/bundle/gems/falcon-0.42.3/lib/falcon/service/supervisor.rb:23:in `require': cannot load such file -- process/metrics (LoadError)
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/service/supervisor.rb:23:in `<top (required)>'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/environments/supervisor.rb:23:in `require_relative'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/environments/supervisor.rb:23:in `block in load'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/configuration.rb:134:in `instance_eval'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/configuration.rb:134:in `block in load'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/configuration.rb:127:in `each'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/configuration.rb:127:in `load'
        from /app/falcon.rb:4:in `load_file'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/configuration.rb:118:in `instance_eval'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/configuration.rb:118:in `load_file'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/configuration.rb:85:in `load_file'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/command/host.rb:54:in `block in configuration'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/command/host.rb:52:in `each'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/command/host.rb:52:in `configuration'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/controller/host.rb:39:in `initialize'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/command/host.rb:62:in `new'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/command/host.rb:62:in `controller'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/command/host.rb:84:in `call'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/command/top.rb:105:in `call'
        from /usr/local/bundle/gems/samovar-2.1.4/lib/samovar/command.rb:36:in `call'
        from /usr/local/bundle/gems/falcon-0.42.3/lib/falcon/command.rb:30:in `call'
        from /usr/local/bundle/gems/falcon-0.42.3/bin/falcon:26:in `<top (required)>'
        from /usr/local/bundle/bin/falcon:25:in `load'
        from /usr/local/bundle/bin/falcon:25:in `<main>'

该服务在本地环境运行正常,但容器化运行时出现process/metrics依赖加载失败的问题。

解决方案
  • 补充缺失的依赖:Falcon的supervisor组件依赖process-metrics gem,本地环境可能已手动安装,但容器内仅会安装Gemfile中声明的依赖。在Gemfile中添加gem 'process-metrics',执行bundle install更新Gemfile.lock后重新构建容器。

  • 调整Dockerfile工作目录顺序:当前Dockerfile先执行bundle install再设置WORKDIR,会导致依赖安装路径与应用代码路径不匹配。修改后的Dockerfile如下:

FROM docker.io/library/ruby:3.1.2 AS build-stage

WORKDIR /app

COPY Gemfile .
COPY Gemfile.lock .

RUN bundle install 

COPY . .

CMD falcon host

确保bundle install在应用目录下执行,保证依赖路径一致性。

  • 验证依赖完整性:构建容器前,本地执行bundle check确认所有依赖均已正确声明在Gemfile和Gemfile.lock中,避免容器内依赖缺失。

  • 简化配置(可选):如果不需要supervisor功能,可修改falcon.rb去掉相关配置,避免触发依赖加载:

#!/usr/bin/env -S falcon host
# frozen_string_literal: true

load :rack

rack 'localhost' do
    endpoint Async::HTTP::Endpoint
        .parse('http://0.0.0.0:3001')
end

内容的提问来源于stack exchange,提问作者wolfsblu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:31:09