2016-06-07 18 views
0

我正在考慮一種體系結構,我在Docker容器內運行的JBOSS上部署JavaEE Web應用程序。部署期間將數據保留在嵌入式數據庫中

  • 機:泊塢窗(Linux版)
  • Web服務器:JBoss的
  • 框架:vaadin + JPA +休眠
  • 數據庫:(這就是我的問題)

因爲它是一個非常簡單的應用程序,我正在考慮使用像德比或h2這樣的嵌入式數據庫。

但是,如果需要部署此應用程序的新版本,則必須保留數據庫內的數據。

所以,這是一個相當愚蠢的問題,但我需要確認我的假設是正確的。

假設(正確與否):

  1. 如果我停止泊塢窗機並重新啓動,該數據將會丟失。

  2. 如果我把泊塢窗容器中運行並部署* .war文件的新版本,不會有數據丟失

  3. 我可以創建一個SQL腳本在啓動時運行並填充數據庫,但所有用戶生成的數據都將丟失。

+2

1,是,2.不確定,3.是。最好的辦法是創建一個單獨的數據庫,將其寫入靜態服務器上的文件系統。 – duffymo

+0

hibernate.hbm2ddl.auto的值是什麼? –

+0

我沒有工作應用還,但我打算使用hibernate.hbm2ddl.auto - 如果你需要的是沒有的問題,一個不錯的選擇將是SQLite的一個非常簡單的DBMS值=「更新」 – guilhermecgs

回答

1

數據不應該保存在容器中,您希望將其放入卷中。通常情況下,這可能是基於主機的卷,或者可以將其放在命名卷或其他泊塢窗容器中。所以運行時,數據庫容器:

docker run -v PWD /dbdata:/data mydb:latest

這將安裝./dbdata您的容器內如/數據和生存重新啓動和升級。使用基於主機的卷時,您需要手動初始化內容,它不會包含通過Dockerfile在圖像內部創建的任何卷數據。