运行Docker时尚未检出git源

krs*_*ung 9 ruby rubygems bundler docker

我正在尝试使用GitHub中的gem时遇到错误.我的Gemfile中有以下内容:

# Gemfile
source 'https://rubygems.org'
ruby '2.3.1'

gem 'sinatra'
gem 'rack'
gem 'puma'

group :development do
  gem 'byebug'
  gem 'rack-test'
  gem 'rerun', github: 'alexch/rerun', branch: 'master'
end
Run Code Online (Sandbox Code Playgroud)

当我bundle installDockerfile它运行时,使用如下消息:

...
Installing sinatra 1.4.6
Installing listen 3.1.5 (was 3.0.6)
Using rerun 0.11.0 from git://github.com/alexch/rerun.git (at master@3e4c486)
Bundle complete! 6 Gemfile dependencies, 14 gems now installed.
...
Run Code Online (Sandbox Code Playgroud)

但是,当我开始容器时,我得到:

The git source git://github.com/alexch/rerun.git is not yet checked out. Please run `bundle install` before trying to start your application
Run Code Online (Sandbox Code Playgroud)

我见过类似的问题,但与Docker无关.

krs*_*ung 16

事实证明我能找到问题.问题与我用于构建Docker镜像的Gemfile有关.

我没有在本地运行bundle install导致Gemfile.lock未更新的命令.运行命令后,以下内容添加到我的Gemfile.lock:

@@ -1,14 +1,20 @@
+GIT
+  remote: git://github.com/alexch/rerun.git
+  revision: 3e4c486304be406cb86180ef70ec24e9ae055ce4
+  branch: master
+  specs:
+    rerun (0.11.0)
+      listen (~> 3.0)
Run Code Online (Sandbox Code Playgroud)

事实证明,这就是我所需要的.一旦我有了更新的文件,重建图像并运行容器一切按预期工作bundle exec rerun.所以问题就是我正在使用它Gemfile.lock来帮助缓存/版本锁定,但未能使用我的更新Gemfile.