如何在 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
我正在尝试使用 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