Ruby 在Docker for Windows上构建映像时,gem安装失败

Ruby 在Docker for Windows上构建映像时,gem安装失败,ruby,windows,ssl,docker,bundler,Ruby,Windows,Ssl,Docker,Bundler,我正在尝试从Dockerfile构建Docker映像。该图像基于最新的图像。它在上面安装Ruby和一些宝石。以下是Dockerfile: FROM node:alpine ENV BUNDLE_SILENCE_ROOT_WARNING=1 BUNDLE_APP_CONFIG=/usr/local/bundle \ BUNDLE_BIN=/usr/local/bundle/bin BUNDLE_PATH=/usr/local/bundle RUN apk add ruby ruby-io-co

我正在尝试从Dockerfile构建Docker映像。该图像基于最新的图像。它在上面安装Ruby和一些宝石。以下是Dockerfile:

FROM node:alpine
ENV BUNDLE_SILENCE_ROOT_WARNING=1 BUNDLE_APP_CONFIG=/usr/local/bundle \
  BUNDLE_BIN=/usr/local/bundle/bin BUNDLE_PATH=/usr/local/bundle
RUN apk add ruby ruby-io-console ruby-bundler ca-certificates \
  build-base ruby-dev ruby-json libffi-dev \
  python zlib-dev --no-cache && \
  update-ca-certificates

WORKDIR /opt/middleman
COPY Gemfile* ./
RUN bundle install --clean
COPY package.json ./
RUN npm install
我可以在Linux和MacOS上构建映像,但在Windows上bundler会随机失败,每次都在不同的gem上,并显示以下消息:

Gem::RemoteFetcher::FetchError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A (https://rubygems.org/gems/rack-2.0.1.gem)
我在谷歌上搜索了SSL错误,大多数解决方案建议安装一些SSL证书。但是,在我的例子中,基本Docker映像是相同的。只有Docker主机操作系统不同。如果问题是SSL证书,bundler每次都会在第一个gem上失败,而不是随机失败。所以我猜当Docker在Windows上运行时会出现一些问题,但我已经没有想法了。有什么帮助吗

PS:我已经确保所有机器都有相同的node:alpine快照,这恰好是:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
node                alpine              37434f668ea8        30 hours ago        55.3 MB

更新:
  • 我也试着建立了一个模型,但失败了
  • 我尝试使用较旧的Docker工具箱构建快速启动映像,该工具箱使用VirtualBox而不是Hyper-V。它再次失败,每次都在不同的gem上,但错误现在不同了:

    Gem::RemoteFetcher::FetchError: Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://rubygems.org/gems/minitest-5.10.1.gem)
    

  • 不过仍然是SSL错误。

    谢谢您的评论。我终于找到了罪犯。这是我杀手级无线网卡的一个“功能”。。。作为将来的参考,我必须禁用“Killer Network Manager”应用程序中的“高级流检测”。以下是一个屏幕截图:


    他们可能应该称之为SSL killer。

    使用http版本而不是https,例如“gem install rails--source”很好的解决方法!我把Gemfile的源代码改为http,它成功了!然而,我仍然不明白SSL的根本问题是什么。该官员也不工作。由于相同的SSL错误,它失败。如果一个gem由于SSL错误而无法安装,那么它们都应该失败。在安装任何gem之前,请尝试“gem update--system”。@JLB您是对的,但是每次我尝试构建映像时,不同的gem都会失败。这在macOS或Linux上从来都不是问题,所以我猜这要么是Docker for Windows的问题,要么是HyperV的问题,要么是Windows本身的问题。顺便说一下,我确实尝试了
    gem update--system
    ,但它什么也没做。显示当前安装的最新版本。正在中止。然后捆绑程序再次随机失败。