То, что вы ищете, это Объем докера .
Вот подтверждение концепции:
Шаг 1. Создайте IRB REPL (или другой, если хотите), который требует вашей библиотеки:
# console.rb
#!/usr/bin/env ruby
require "irb"
require "irb/completion" # easy tab completion
require_relative "test"
Dir.chdir '/app'
IRB.start
Шаг 2. Используйте его как файл test
, как того требует консольный скрипт выше:
# test.rb
def hello
puts "world"
end
Шаг 3. Запустите IRB из контейнера, одновременно монтируя текущий каталог в контейнер. Я использую здесь свое собственное альпийское изображение Ruby, но вы можете выбрать любое изображение Ruby, которое вы хотите (при условии, что оно поставляется с IRB), или создать собственное изображение.
$ docker run --rm -it --volume $PWD:/app dannyben/alpine-ruby ruby /app/console.rb
Шаг 4. На этом этапе вы должны находиться внутри консоли IRB и иметь возможность запускать свой код:
irb(main):002:0> hello
world
Шаг 5: При изменении кода вам нужно будет загрузить его снова с помощью:
irb(main):003:0> load 'test.rb'
=> true
(Или выйдите из контейнера и запустите его снова - перестройка не требуется).