如何在 Docker 容器中写入带有 Ruby 的文件?

How do I write a file with Ruby within a Docker container?

我正在尝试使用 Ruby dockerized 编写一个新文件。我可以在写入文件后读取文件,但只能在容器内读取。我试图创建一个卷并将文件保存在其中,但我做错了,因为数据文件夹始终是空的。

这是我的 Dockerfile:

RUN mkdir /data
VOLUME data data
COPY hello.rb .
ENTRYPOINT ["ruby", "hello.rb"]

这里是hello.rb

File.open("./data/out.txt", "a+") do |line|
  puts "hola"
  line.puts "\r" + "write your stuff here"
end
File.open("./data/out.txt").each do |line|
  puts "aloha"
  puts line
end

File.write("./data/log.txt", "data...", mode: "a")
File.open("./data/log.txt").each do |line|
  puts "aloha"
  puts line
end

运行之后:

$ docker build -t file-writer .
$ docker run -it file-writer

控制台的输出是:

hola

aloha

write your stuff here

aloha

data...

但是 "local" 数据文件夹仍然是空的。

您需要在 运行 阶段

期间设置您的 mount

从您的 Dockerfile 和 运行 容器中删除 VOLUME data data :

docker run -it -v /full/path/to/data:/data file-writer