无法将数据从 Docker 容器 运行 julia 应用程序写入本地存储

Cannot write data from Docker Container running julia application to local storage

我有与 docker 容器从本地磁盘写入和读取相关的查询。 例如,我有一个 julia 应用程序,它使用以下一组函数写入和读取处理后的数据:

function store(data::Array, ref::String)
   name = test_folder
   try
     create_dir(mkdir("$(homedir())/$name"))
   catch
     @warn "directory exists"
   end
   
   open("$(mkpath("$(joinpath(homedir(),"test_folder"))\$ref\$ref.jls", "w") do io
       serialize(io, data)
   end
end

function read_storage(ref)
   data = open(joinpath(homedir(), "test_folder\$ref\$ref.jls")) do io
       data = deserialize(io)
       return data
   end
   return data
end

为了将此应用程序容器化(在端口 8000 上公开),我创建了一个 docker 文件,如下所示:

FROM julia:1.6
WORKDIR /home

ENV Version 1
ADD . /home

RUN julia app.jl

ENTRYPOINT ["julia", "-e", "app.run()"

然而,在 运行 这个容器并将其暴露到某个端口时,这不会将数据写入我的本地 homedir() 甚至当我试图在 exec 模式 test_folder 无法在任何地方找到。

请问是什么原因造成的? 谢谢,期待建议!

使用 bind mount。例如在 linux 主机上:

docker -v $HOME/test_folder:/home/test_folder image_name

:前的路径为本地宿主机目录,:分隔符后定义的路径为容器目录路径