我正在考虑一个架构,我在一个在Docker容器内运行的JBOSS上部署JavaEE Web应用程序。
由于它是一个非常简单的应用程序,我正在考虑使用像derby或h2这样的嵌入式数据库。
但是,如果需要部署此应用程序的新版本,则必须保留数据库中的数据。
所以,这是一个愚蠢的问题,但我需要确认我的假设是正确的。
假设(正确与否):
如果我停止泊坞机并重新启动它,数据将会丢失。
如果我保持docker容器运行并部署新版本的* .WAR文件,则不会丢失任何数据
我可以创建一个sql脚本,在启动时运行并填充数据库,但所有用户生成的数据都将丢失。
答案 0 :(得分:1)
数据不应保存在容器中,您要将其放在卷内。通常,这可能是基于主机的卷,也可以将其放在命名卷或其他docker容器中。所以在运行数据库容器时:
docker run -v
{PWD {1}}
这会将./dbdata作为/ data挂载到容器内部,并在重新启动和升级后继续运行。对于基于主机的卷,您需要手动初始化内容,它不包括通过Dockerfile在映像内创建的任何卷数据。