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

时间:2016-12-23 02:02:47

标签: ruby windows ssl docker bundler

我正在尝试从Dockerfile构建Docker镜像。该图像基于最新的node:alpine图像。它在它上面安装了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上捆绑器每次都会在不同的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)

我用Google搜索了SSL错误,大多数解决方案建议安装一些SSL证书。但是,在我的情况下,基本Docker镜像是相同的。只有Docker主机操作系统不同。如果问题是SSL证书,那么捆绑器总是会在第一个宝石上失败,而不是每次都是随机的。所以我的猜测是Docker在Windows上运行时出现了问题,但我的想法已经用完了。有什么帮助吗?

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

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

更新

  1. 我也试过构建quick-start Rails image但它失败了。
  2. 我尝试使用较旧的Docker Toolbox构建快速启动映像,该工具箱使用VirtualBox而不是Hyper-V。它再次失败,每次都在不同的宝石上,但错误现在不同了:

    Gem::RemoteFetcher::FetchError: Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://rubygems.org/gems/minitest-5.10.1.gem)
    
  3. 但仍然是SSL错误。

1 个答案:

答案 0 :(得分:0)

感谢您的所有评论。我终于找到了罪魁祸首。它是一个"功能"我的杀手无线卡...为了将来参考,我必须禁用"高级流检测"在"杀手网络管理器"应用程序。这是一个截图:

SSL Killer

他们应该称之为SSL杀手。