ruby - 在当前文件夹上使用Ruby REPL的Docker

标签 ruby docker

我正在使用一个包含一些文件的小型ruby目录,我想运行Ruby REPL(在docker镜像内)并访问我当前文件夹(例如)中的所有文件。

我不想每次更改文件时都建立一个新的容器,这可能吗?我看过docker文档,但不知道。

最佳答案

您正在寻找的是Docker Volumes

这是一个概念证明:

步骤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,同时将当前目录安装到容器中。我在这里使用自己的 Alpine 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

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

关于ruby - 在当前文件夹上使用Ruby REPL的Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54164019/

相关文章:

c - Ruby 枚举和 RETURN_ENUMERATOR - 有关 Ruby C 内部的问题

ruby-on-rails - 使用 docker 卷时,本地更改不反射(reflect)浏览器中的更改

node.js - docker stack与mssql和node,如何正确连接到数据库?

scala - 无法保持Scala应用程序在docker上运行

ruby - 我如何使用 Rugged 来创建和提交文件,就像从命令行一样?

ruby-on-rails - 寻找更快的 ActiveRecord 查询 (Ruby on Rails)

ruby-on-rails - Net::HTTP 启动与新建

ruby-on-rails - ActiveRecord getter 中断验证

php - Docker容器无法互相连接

node.js - Dockerized NodeJS在npm运行时选择脚本