Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Docker容器中运行的Ruby本地Gem_Ruby_Docker_Rubygems_Local - Fatal编程技术网

在Docker容器中运行的Ruby本地Gem

在Docker容器中运行的Ruby本地Gem,ruby,docker,rubygems,local,Ruby,Docker,Rubygems,Local,作为我扔掉所有重构之前的最后一个资源,我在这里提出这个问题。我面临着这种奇怪的行为。我是Ruby新手,所以很可能是我做错了什么 我将一些常见功能提取到一个本地Gem中,当在本地运行Sinatra应用程序(这是一个简单的Github应用程序)时,它就可以工作 但当我尝试运行Docker容器时,它似乎只在我关闭(Ctrl+c)应用程序(Sinatra完成后会出现日志)后运行对Gem的调用 要构建图像,我将执行以下步骤: FROM ruby:slim-buster ARG GITHUB_APP_I

作为我扔掉所有重构之前的最后一个资源,我在这里提出这个问题。我面临着这种奇怪的行为。我是Ruby新手,所以很可能是我做错了什么

我将一些常见功能提取到一个本地Gem中,当在本地运行Sinatra应用程序(这是一个简单的Github应用程序)时,它就可以工作

但当我尝试运行Docker容器时,它似乎只在我关闭(Ctrl+c)应用程序(Sinatra完成后会出现日志)后运行对Gem的调用

要构建图像,我将执行以下步骤:

FROM ruby:slim-buster

ARG GITHUB_APP_IDENTIFIER
ARG GITHUB_WEBHOOK_SECRET
ARG GITHUB_PRIVATE_KEY
ARG ACCESS_TOKEN

RUN apt update && apt install -y git --no-install-recommends

COPY LineEnding/line_ending.rb LineEnding/Gemfile LineEnding/Gemfile.lock /line_ending/
COPY github_gem/ /github_gem
WORKDIR /github_gem
RUN gem install bundler && bundle install
RUN gem install github_gem-0.1.0.gem
WORKDIR /line_ending
RUN bundle install

ENV GITHUB_APP_IDENTIFIER ${GITHUB_APP_IDENTIFIER}
ENV GITHUB_WEBHOOK_SECRET ${GITHUB_WEBHOOK_SECRET}
ENV GITHUB_PRIVATE_KEY ${GITHUB_PRIVATE_KEY}
ENV ACCESS_TOKEN ${ACCESS_TOKEN}

EXPOSE 3001

CMD ["ruby", "line_ending.rb"]
在本地运行时,工作正常,日志如下:

作为另一条信息,我尝试在Docker中管道化日志,如下所示:

def initialize
  docker_stdout = IO.new(IO.sysopen("/proc/1/fd/1", "w"),"w")

  @logger = Logger.new(docker_stdout)
  @logger.level = Logger::DEBUG
end
这并没有什么区别,STDOUT和docker_STDOUT的行为方式都不一样

完整的错误日志:

[2020-11-17 10:20:48] INFO  WEBrick 1.6.0
[2020-11-17 10:20:48] INFO  ruby 2.7.2 (2020-10-01) [x86_64-linux]
== Sinatra (v2.0.4) has taken the stage on 3001 for development with backup from WEBrick
[2020-11-17 10:20:48] INFO  WEBrick::HTTPServer#start: pid=1 port=3001
D, [2020-11-17T10:21:00.306766 #1] DEBUG -- : request
D, [2020-11-17T10:21:00.308179 #1] DEBUG -- : Authenticate app
D, [2020-11-17T10:21:00.308209 #1] DEBUG -- : 2020-11-17 10:21:00.308206249 +0000
D, [2020-11-17T10:21:00.308245 #1] DEBUG -- : 1605608460
D, [2020-11-17T10:21:00.308290 #1] DEBUG -- : 1605609060
D, [2020-11-17T10:21:00.312411 #1] DEBUG -- : Get installation key
WARNING: The preview version of the Integrations API is not yet suitable for production use.
You can avoid this message by supplying an appropriate media type in the 'Accept' request
header.
2020-11-17 10:21:08 - Faraday::ConnectionFailed - Failed to open TCP connection to github.com:443 (getaddrinfo: Temporary failure in name resolution):
    /usr/local/lib/ruby/2.7.0/net/http.rb:960:in `initialize'
    /usr/local/lib/ruby/2.7.0/net/http.rb:960:in `open'
    /usr/local/lib/ruby/2.7.0/net/http.rb:960:in `block in connect'
    /usr/local/lib/ruby/2.7.0/timeout.rb:95:in `block in timeout'
    /usr/local/lib/ruby/2.7.0/timeout.rb:105:in `timeout'
    /usr/local/lib/ruby/2.7.0/net/http.rb:958:in `connect'
    /usr/local/lib/ruby/2.7.0/net/http.rb:943:in `do_start'
    /usr/local/lib/ruby/2.7.0/net/http.rb:932:in `start'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:152:in `request_via_request_method'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:137:in `request_with_wrapped_block'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:128:in `perform_request'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:70:in `block in call'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter.rb:61:in `connection'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:68:in `call'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/response.rb:11:in `call'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/response.rb:11:in `call'
    /usr/local/bundle/gems/octokit-4.19.0/lib/octokit/middleware/follow_redirects.rb:73:in `perform_with_redirection'
    /usr/local/bundle/gems/octokit-4.19.0/lib/octokit/middleware/follow_redirects.rb:61:in `call'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/request/retry.rb:148:in `call'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/rack_builder.rb:154:in `build_response'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/connection.rb:492:in `run_request'
    /usr/local/bundle/gems/faraday-1.1.0/lib/faraday/connection.rb:279:in `post'
    /usr/local/bundle/gems/sawyer-0.8.2/lib/sawyer/agent.rb:94:in `call'
    /usr/local/bundle/gems/octokit-4.19.0/lib/octokit/connection.rb:156:in `request'
    /usr/local/bundle/gems/octokit-4.19.0/lib/octokit/connection.rb:28:in `post'
    /usr/local/bundle/gems/octokit-4.19.0/lib/octokit/client/apps.rb:78:in `create_app_installation_access_token'
    /usr/local/bundle/gems/github_gem-0.1.0/lib/github_gem.rb:137:in `authenticate_installation'
    line_ending.rb:69:in `block in <class:GHAapp>'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `call'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `block in compile!'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1040:in `block in process_route'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `catch'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `process_route'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in `block in filter!'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in `each'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in `filter!'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1096:in `block in dispatch!'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1094:in `dispatch!'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `block in call!'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `call!'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:913:in `call'
    /usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protection/xss_header.rb:18:in `call'
    /usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protection/path_traversal.rb:16:in `call'
    /usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protection/json_csrf.rb:26:in `call'
    /usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
    /usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
    /usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protection/frame_options.rb:31:in `call'
    /usr/local/bundle/gems/rack-2.0.6/lib/rack/logger.rb:15:in `call'
    /usr/local/bundle/gems/rack-2.0.6/lib/rack/common_logger.rb:33:in `call'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:231:in `call'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:224:in `call'
    /usr/local/bundle/gems/rack-2.0.6/lib/rack/head.rb:12:in `call'
    /usr/local/bundle/gems/rack-2.0.6/lib/rack/method_override.rb:22:in `call'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/show_exceptions.rb:22:in `call'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:194:in `call'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1957:in `call'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `block in call'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1729:in `synchronize'
    /usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `call'
    /usr/local/bundle/gems/rack-2.0.6/lib/rack/handler/webrick.rb:86:in `service'
    /usr/local/lib/ruby/2.7.0/webrick/httpserver.rb:140:in `service'
    /usr/local/lib/ruby/2.7.0/webrick/httpserver.rb:96:in `run'
    /usr/local/lib/ruby/2.7.0/webrick/server.rb:307:in `block in start_thread'
16.85.88.12 - - [17/Nov/2020:10:20:59 UTC] "POST /event_handler HTTP/1.1" 500 190501
- -> /event_handler
^C== Sinatra has ended his set (crowd applauds)
[2020-11-17 10:21:10] INFO  going to shutdown ...
[2020-11-17 10:21:10] INFO  WEBrick::HTTPServer#start done.
[2020-11-17 10:21:10] INFO  WEBrick 1.6.0
[2020-11-17 10:21:10] INFO  ruby 2.7.2 (2020-10-01) [x86_64-linux]
== Sinatra (v2.0.4) has taken the stage on 3001 for development with backup from WEBrick
[2020-11-17 10:21:10] INFO  WEBrick::HTTPServer#start: pid=1 port=3001
^C== Sinatra has ended his set (crowd applauds)
[2020-11-17 10:21:10] INFO  going to shutdown ...
[2020-11-17 10:21:10] INFO  WEBrick::HTTPServer#start done.
D, [2020-11-17T10:21:00.306932 #1] DEBUG -- : ---- get payload
D, [2020-11-17T10:21:00.307577 #1] DEBUG -- : ---- verify webhook signature
D, [2020-11-17T10:21:00.308133 #1] DEBUG -- : ---- received event check_run
D, [2020-11-17T10:21:00.308160 #1] DEBUG -- : ----    action created
D, [2020-11-17T10:21:00.312187 #1] DEBUG -- : ---- authenticate Client
[2020-11-17 10:20:48]信息WEBrick 1.6.0
[2020-11-17 10:20:48]信息ruby 2.7.2(2020-10-01)[x86_64-linux]
==Sinatra(v2.0.4)已在3001上登台开发,由WEBrick提供备份
[2020-11-17 10:20:48]信息WEBrick::HTTPServer#启动:pid=1端口=3001
D、 [2020-11-17T10:21:00.306766#1]调试--:请求
D、 [2020-11-17T10:21:00.308179#1]调试--:验证应用程序
D、 [2020-11-17T10:21:00.308209#1]调试--:2020-11-17 10:21:00.308206249+0000
D、 [2020-11-17T10:21:00.308245#1]调试--:1605608460
D、 [2020-11-17T10:21:00.308290#1]调试--:1605609060
D、 调试--:获取安装密钥
警告:集成API的预览版本尚不适合生产使用。
您可以通过在“接受”请求中提供适当的媒体类型来避免此消息
标题。
2020-11-17 10:21:08-法拉第::连接失败-无法打开到github.com:443的TCP连接(getaddrinfo:名称解析暂时失败):
/usr/local/lib/ruby/2.7.0/net/http.rb:960:in'initialize'
/usr/local/lib/ruby/2.7.0/net/http.rb:960:in'open'
/usr/local/lib/ruby/2.7.0/net/http.rb:960:in'block in connect'
/usr/local/lib/ruby/2.7.0/timeout.rb:95:in'block in timeout'
/usr/local/lib/ruby/2.7.0/timeout.rb:105:in'timeout'
/usr/local/lib/ruby/2.7.0/net/http.rb:958:in'connect'
/usr/local/lib/ruby/2.7.0/net/http.rb:943:in'do_start'
/usr/local/lib/ruby/2.7.0/net/http.rb:932:in'start'
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:152:“通过请求方法请求”
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:137:在“带包装块的请求”中
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:128:“执行请求”中的
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:70:in'block in call'
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter.rb:61:在“连接”中
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/adapter/net_http.rb:68:in'call'
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/response.rb:11:in'call'
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/response.rb:11:in'call'
/usr/local/bundle/gems/octokit-4.19.0/lib/octokit/middleware/follow\u重定向。rb:73:in'perform\u with\u redirection'
/usr/local/bundle/gems/octokit-4.19.0/lib/octokit/middleware/follow_重定向
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/request/retry.rb:148:in'call'
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/rack_builder.rb:154:在“build_response”中
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/connection.rb:492:in'run_request'
/usr/local/bundle/gems/faraday-1.1.0/lib/faraday/connection.rb:279:in'post'
/usr/local/bundle/gems/sawyer-0.8.2/lib/sawyer/agent.rb:94:in'call'
/usr/local/bundle/gems/octokit-4.19.0/lib/octokit/connection.rb:156:in'request'
/usr/local/bundle/gems/octokit-4.19.0/lib/octokit/connection.rb:28:in'post'
/usr/local/bundle/gems/octokit-4.19.0/lib/octokit/client/apps.rb:78:“创建应用程序安装访问令牌”
/usr/local/bundle/gems/github_gem-0.1.0/lib/github_gem.rb:137:in'authenticate_installation'
行_结束。rb:69:in'block in'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in'call'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in'block in compile!'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1040:in“流程中的块”
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in'catch'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:正在进行中
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in'block-in-filter!'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in'each'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:983:in'filter!'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1096:in“发送中的块!”
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in'block in invoke'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in'catch'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in'invoke'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1094:in'dispatch!'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in'block-in-call!'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in'block in invoke'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in'catch'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in'invoke'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in'call!'
/usr/local/bundle/gems/sinatra-2.0.4/lib/sinatra/base.rb:913:in'call'
/usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protection/xss_header.rb:18:in'call'
/usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protection/path_traversal.rb:16:in'call'
/usr/local/bundle/gems/rack-protection-2.0.4/lib/rack/protectio