docker - 如何在 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...
但是“本地”数据文件夹仍然是空的。
解决方案
你需要mount
在运行阶段设置你的
VOLUME data data
从您的容器中删除Dockerfile
并运行容器:
docker run -it -v /full/path/to/data:/data file-writer
推荐阅读
- python - Python - 矩阵乘法代码问题
- openssl - 从 UEFI 创建签名证书请求和验证证书的最佳方式
- xamarin - Xamarin:从 Visual Studio 将 iOS 发布到 App Store 不起作用
- ios - RealityKit 让我的 iPhone 热状态无缘无故地发疯
- pytorch - 如何创建具有多个索引的张量索引?
- php - 合并多维数组中的 2 个值
- reactjs - 如何检查 Axios 调用是否因没有 Internet 连接而失败?
- java - 如何使用 System.nanoTime() 准确地延迟循环迭代以达到每秒 1M 的频率?
- c# - Implement conversion of enum types as static "method"
- sql - 使用中间映射表从表中选择数据