在Docker容器中通过Java创建(并保留)文件

时间:2018-07-03 07:08:45

标签: java spring docker

我正在开发一个旨在在Docker容器中运行的Java Spring Boot应用程序。运行图像时,我需要应用程序检查路径中是否存在文件,如果不存在则创建该文件。当我停止容器并再次启动它时,该文件再次丢失。 我该如何实现?我需要在主机上装载卷吗?

2 个答案:

答案 0 :(得分:2)

假设您的Java应用程序app将文件保存在以下位置:

/var/lib/data

然后,您应按以下方式启动容器:

docker volume create app-data

docker run -p 8080:8080 --mount source=app-data,target=/var/lib/data app

这会将您的所有数据存储在名为app-data的持久卷中

您还可以按以下方式在主机和容器之间绑定目录:

docker run -p 8080:8080 --volume /var/lib/data:/var/lib/data app

这会将所有内容存储在主机上的/var/lib/data中,而不是容器中。这样,下次启动容器时,它将从那里读取。

我通常会选择第一个选项,因为我有一个要存储的数据的名称,它并没有改变主机的“状态”(可以说仍然是,但很小)。如果主机上运行的任何其他进程触摸该目录,则绑定目录会留出错误的空间。

请参阅:https://docs.docker.com/storage/volumes/

答案 1 :(得分:0)

好吧,如@Ben所说,当我停止/启动容器而不是运行容器时,它工作正常。

相关问题