【发布时间】:2017-08-11 11:49:55
【问题描述】:
我有一个需要解析数据集文件的 java 应用程序。我已经使用 docker 将应用程序容器化,但容器在我的主机中看不到我的文件。 因此,我需要以某种方式将其包含在 docker 容器中,或者通过映射到我的容器中的 docker 卷使其可用。
在我拥有的 java 应用程序中
String dataSet = "/usr/DataSet/TempData.txt"; // inside the container
File textfile = new File(dataSet);
Scanner sc = new Scanner(textfile);
我的文件存储在我的主机中的一个目录 (/home/myusername/Desktop/DataSet) 中。
我使用 maven 中的 spotify 插件编译和构建我的 docker 镜像。 构建映像后,我运行一个容器并映射一个包含我的 TempData.txt 的卷:
sudo docker run -it -v /home/myUserName/Desktop/DataSet:/usr/DataSet --name myapp myImageName bash
但我收到 java.io.FileNotFoundException 错误,因为该文件在我的容器中不可用..
让我的 java dockerized 应用程序能够读取和解析文件的最佳方法是什么?
感谢您的意见!
【问题讨论】:
-
您将文件映射到
/usr/DataSet,但您在/usr/TempData中搜索文件。更改其中一个,它应该可以工作 -
嗨,对不起,这是一个拼写错误..确实我映射到同一个目录...我编辑了帖子!
-
我在另一个 Ubuntu 虚拟容器中测试了 docker 命令。它创建目录 /usr/DataSet 但其中没有可用的文件!
-
你在使用 Docker for Mac 吗?
-
不,在 Ubuntu 中。但是我的问题解决了。我将文件放在我的主目录中,然后将其映射到容器中......现在它可以工作了!也许卷只在主目录而不是其他地方工作....对我来说仍然是新的,我需要发现更多关于它的信息......感谢您的帮助:)
标签: java maven docker containers spotify