Докер с Ruby REPL на текущей папке - PullRequest
0 голосов
/ 13 января 2019

Я работаю над небольшим каталогом ruby ​​с несколькими файлами, я хочу запустить ruby ​​REPL (внутри образа докера) с доступом ко всем файлам в моей текущей папке (например,).

Я не хочу создавать новый контейнер все время, пока я изменяю какой-нибудь файл, это возможно? Я посмотрел документацию докера, но не могу понять.

1 Ответ

0 голосов
/ 13 января 2019

То, что вы ищете, это Объем докера .

Вот подтверждение концепции:

Шаг 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

(Или выйдите из контейнера и запустите его снова - перестройка не требуется).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...