首页 > 解决方案 > 如何在 Docker 容器中使用 Ruby 编写文件?

问题描述

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

但是“本地”数据文件夹仍然是空的。

标签: dockerdockerfiledocker-volume

解决方案


你需要mount在运行阶段设置你的

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

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

推荐阅读