Closed wjessop closed 10 months ago
If I build the image directly using docker, then run it it works:
% docker build . --build-arg RUBY_VERSION=2.3.8
[+] Building 23.8s (12/12) FINISHED docker:desktop-linux
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 957B 0.0s
=> [internal] load metadata for docker.io/library/ruby:2.3.8 0.8s
=> [1/7] FROM docker.io/library/ruby:2.3.8@sha256:78cc821d95c48621e577b6b0d44c9d509f0f2a4e089b9fd0ca2ae86f274773a8 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 49.99kB 0.0s
=> CACHED [2/7] RUN { echo 'install: --no-document'; echo 'update: --no-document'; } >> /etc/gemrc 0.0s
=> CACHED [3/7] WORKDIR /usr/src/app 0.0s
=> [4/7] COPY . . 0.0s
=> [5/7] RUN if ruby -e 'exit RUBY_VERSION < "2.4"' ; then gem install bundler -v '<= 2.3.26'; elif ruby -e 'exit RUBY_VERSION < "2.6"' ; then gem install bundler -v '<= 2.3.26'; els 14.6s
=> [6/7] RUN if ruby -e 'exit RUBY_VERSION < "2.5"'; then bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"; fi 0.3s
=> [7/7] RUN bundle 7.8s
=> exporting to image 0.1s
=> => exporting layers 0.1s
=> => writing image sha256:d9f9a2e948dd924a9411d6bf9e4c84e4487976e9fb876d9dfbe643f1c4b3d5f5 0.0s
will@lentil ~/www/oas_ruby_agent_3 (on 2_3_8)% docker run -i d9f9a2e948dd924a9411d6bf9e4c84e4487976e9fb876d9dfbe643f1c4b3d5f5
Your RubyGems version (3.0.3) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drops support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by running `gem update --system 3.2.3`
/usr/src/app/lib/agent/agent.rb:24: warning: method redefined; discarding old instance
/usr/local/lib/ruby/2.3.0/singleton.rb:138: warning: previous definition of instance was here
Run options: --seed 53725
# Running:
...........
Finished in 0.001639s, 6711.7493 runs/s, 9762.5444 assertions/s.
11 runs, 16 assertions, 0 failures, 0 errors, 0 skips
Switching to RUN ["bundle", "exec", "rake"]
in the Dockerfile causes the tests to run, and also an error. Weird:
% VERBOSE=1 rake "test:one[2.3.8]"
#0 building with "desktop-linux" instance using docker driver
#1 [ruby_2_3_8 internal] load .dockerignore
#1 transferring context: 2B done
#1 DONE 0.0s
#2 [ruby_2_3_8 internal] load build definition from Dockerfile
#2 transferring dockerfile: 949B done
#2 DONE 0.0s
#3 [ruby_2_3_8 internal] load metadata for docker.io/library/ruby:2.3.8
#3 DONE 0.6s
#4 [ruby_2_3_8 1/8] FROM docker.io/library/ruby:2.3.8@sha256:78cc821d95c48621e577b6b0d44c9d509f0f2a4e089b9fd0ca2ae86f274773a8
#4 DONE 0.0s
#5 [ruby_2_3_8 internal] load build context
#5 transferring context: 43.53kB 0.0s done
#5 DONE 0.0s
#6 [ruby_2_3_8 2/8] RUN { echo 'install: --no-document'; echo 'update: --no-document'; } >> /etc/gemrc
#6 CACHED
#7 [ruby_2_3_8 3/8] WORKDIR /usr/src/app
#7 CACHED
#8 [ruby_2_3_8 4/8] COPY . .
#8 DONE 0.0s
#9 [ruby_2_3_8 5/8] RUN if ruby -e 'exit RUBY_VERSION < "2.4"' ; then gem install bundler -v '<= 2.3.26'; elif ruby -e 'exit RUBY_VERSION < "2.6"' ; then gem install bundler -v '<= 2.3.26'; else gem install bundler -v "$(tail -n1 Gemfile.lock | tr -d ' ')"; fi
#9 14.48 Successfully installed bundler-2.3.26
#9 14.48 1 gem installed
#9 DONE 14.5s
#10 [ruby_2_3_8 6/8] RUN if ruby -e 'exit RUBY_VERSION < "2.5"'; then bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"; fi
#10 0.354 Your RubyGems version (3.0.3) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drops support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by running `gem update --system 3.2.3`
#10 DONE 0.4s
#11 [ruby_2_3_8 7/8] RUN bundle
#11 0.326 Your RubyGems version (3.0.3) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drops support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by running `gem update --system 3.2.3`
#11 0.950 Fetching gem metadata from https://rubygems.org/.........
#11 1.388 Resolving dependencies...
#11 1.488 Fetching rake 13.1.0
#11 1.598 Installing rake 13.1.0
#11 1.612 Using bundler 2.3.26
#11 1.612 Fetching mini_portile 0.6.2
#11 1.613 Fetching minitest 5.13.0
#11 1.614 Fetching msgpack 1.3.3
#11 1.615 Fetching rainbow 3.1.1
#11 1.707 Installing mini_portile 0.6.2
#11 1.711 Installing rainbow 3.1.1
#11 1.718 Fetching nokogiri 1.6.6.4 (was 1.12.5)
#11 1.724 Fetching rubocop 0.7.2 (was 1.57.2)
#11 1.727 Installing minitest 5.13.0
#11 1.728 Installing msgpack 1.3.3 with native extensions
#11 1.810 Installing rubocop 0.7.2 (was 1.57.2)
#11 2.056 Installing nokogiri 1.6.6.4 (was 1.12.5) with native extensions
#11 3.565 Using oas_agent 0.0.1 from source at `.`
#11 7.646 Bundle complete! 6 Gemfile dependencies, 9 gems now installed.
#11 7.646 Bundled gems are installed into `/usr/local/bundle`
#11 DONE 7.7s
#12 [ruby_2_3_8 8/8] RUN ["bundle", "exec", "rake"]
#12 0.233 Your RubyGems version (3.0.3) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drops support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by running `gem update --system 3.2.3`
#12 0.385 /usr/src/app/lib/agent/agent.rb:24: warning: method redefined; discarding old instance
#12 0.385 /usr/local/lib/ruby/2.3.0/singleton.rb:138: warning: previous definition of instance was here
#12 0.398 Run options: --seed 56462
#12 0.398
#12 0.398 # Running:
#12 0.398
#12 0.398 ...........
#12 0.400
#12 0.400 Finished in 0.001608s, 6840.9747 runs/s, 9950.5087 assertions/s.
#12 0.400
#12 0.400 11 runs, 16 assertions, 0 failures, 0 errors, 0 skips
#12 DONE 0.4s
#13 [ruby_2_3_8] exporting to image
#13 exporting layers 0.1s done
#13 writing image sha256:6dd444713e20708349410a33e8155146221413f2b788a62119a5ba5414e11183 done
#13 naming to docker.io/library/oas_ruby_agent_3-ruby_2_3_8 done
#13 DONE 0.1s
Container oas_ruby_agent_3-ruby_2_3_8-1 Creating
Container oas_ruby_agent_3-ruby_2_3_8-1 Created
Attaching to oas_ruby_agent_3-ruby_2_3_8-1
oas_ruby_agent_3-ruby_2_3_8-1 | /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- msgpack (LoadError)
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/src/app/lib/agent/events_cache.rb:6:in `<top (required)>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/src/app/lib/agent/reporter.rb:6:in `<top (required)>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/src/app/lib/agent/agent.rb:5:in `<top (required)>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/src/app/lib/control/instance_methods.rb:4:in `<top (required)>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/src/app/lib/control.rb:5:in `<top (required)>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/src/app/lib/oas_agent.rb:5:in `<top (required)>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/src/app/test/test_helper.rb:2:in `<top (required)>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/src/app/test/agent_test.rb:1:in `<top (required)>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/gems/2.3.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:15:in `block in <main>'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/gems/2.3.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:4:in `select'
oas_ruby_agent_3-ruby_2_3_8-1 | from /usr/local/lib/ruby/gems/2.3.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:4:in `<main>'
oas_ruby_agent_3-ruby_2_3_8-1 | rake aborted!
oas_ruby_agent_3-ruby_2_3_8-1 | Command failed with status (1): [ruby -I"lib:test:lib" -I"/usr/local/lib/ruby/gems/2.3.0/gems/rake-10.4.2/lib" "/usr/local/lib/ruby/gems/2.3.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb" "test/agent_test.rb" "test/lib/agent/event_cache_test.rb" "test/lib/agent/events_cache_test.rb" "test/lib/agent/reporter_test.rb" "test/lib/agent/ruby_receiver_test.rb" ]
oas_ruby_agent_3-ruby_2_3_8-1 |
oas_ruby_agent_3-ruby_2_3_8-1 | Tasks: TOP => default => test
oas_ruby_agent_3-ruby_2_3_8-1 | (See full trace by running task with --trace)
oas_ruby_agent_3-ruby_2_3_8-1 exited with code 1
Aborting on container exit...
Container oas_ruby_agent_3-ruby_2_3_8-1 Stopping
Container oas_ruby_agent_3-ruby_2_3_8-1 Stopped
Ruby 2.3.8 ❌ failed, run this version using `rake "test:one[2.3.8]"`
Fixed by #25, as we pin older version of msgpack that works with that ruby version
2.3.8 currently fails:
Running a bash session in the last created image (after the
bundle
:I can re-create the error by running
rake
orruby -I"lib:test:lib" -I"/usr/local/lib/ruby/gems/2.3.0/gems/rake-10.4.2/lib" "/usr/local/lib/ruby/gems/2.3.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb" "test/agent_test.rb" "test/lib/agent/event_cache_test.rb" "test/lib/agent/events_cache_test.rb" "test/lib/agent/reporter_test.rb" "test/lib/agent/ruby_receiver_test.rb"
:However both of these work fine when
bundle exec
is specified:This is odd as the command in the Docker file is running
bundle exec
. It seems that somewhere that the bundle environment migh tbe getting "forgotten"?