在当前文件夹上具有Ruby REPL的Docker

在当前文件夹上具有Ruby REPL的Docker,ruby,docker,Ruby,Docker,我正在处理一个包含几个文件的小ruby目录,我想运行ruby REPL(在docker映像中),并访问当前文件夹中的所有文件(例如) 我不想在每次更改某些文件时都构建一个新的容器,这可能吗?我已经看过docker文档,但我搞不懂。您要找的是 以下是概念证明: 第一步。创建需要您的库的IRB REPL(或其他,如果您愿意): # console.rb #!/usr/bin/env ruby require "irb" require "irb/completion" # easy tab com

我正在处理一个包含几个文件的小ruby目录,我想运行ruby REPL(在docker映像中),并访问当前文件夹中的所有文件(例如)


我不想在每次更改某些文件时都构建一个新的容器,这可能吗?我已经看过docker文档,但我搞不懂。

您要找的是

以下是概念证明:

第一步。创建需要您的库的IRB REPL(或其他,如果您愿意):

# console.rb
#!/usr/bin/env ruby

require "irb"
require "irb/completion" # easy tab completion
require_relative "test"

Dir.chdir '/app'
IRB.start
第二步。按照上面控制台脚本的要求,将其用作测试文件:

# test.rb
def hello
  puts "world"
end
第三步。从容器中运行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

(或者,退出容器并再次运行它-无需重建)。

您要查找的是

以下是概念证明:

第一步。创建需要您的库的IRB REPL(或其他,如果您愿意):

# console.rb
#!/usr/bin/env ruby

require "irb"
require "irb/completion" # easy tab completion
require_relative "test"

Dir.chdir '/app'
IRB.start
第二步。按照上面控制台脚本的要求,将其用作测试文件:

# test.rb
def hello
  puts "world"
end
第三步。从容器中运行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

(或者,退出容器并再次运行它-无需重建)。

您可以通过SSH连接到docker容器并编辑其中的文件查看docker卷,如前所述。或者看看docker compose。您可以在此处看到一个设置卷以将当前目录装载到docker容器的示例:您可以通过SSH将当前目录装载到docker容器并编辑其中的文件查看docker卷,如前所述。或者看看docker compose。您可以在此处看到设置卷以将当前目录装入docker容器的示例: