如何持久化Quarkus DevServices数据库?是否支持挂载卷?
持久化Quarkus DevServices数据库的方法
Quarkus DevServices支持通过自定义Docker容器挂载卷来实现数据库数据持久化,虽然没有你设想的quarkus.datasource.devservices.volume这类直接配置,但可以通过以下方式实现:
1. 用容器启动参数配置挂载
针对不同数据库(如PostgreSQL、MySQL),可以通过quarkus.datasource.devservices.additional-properties传递容器启动参数,指定挂载已有的卷。
以PostgreSQL为例,配置如下:
# 将本地已有的Docker卷挂载到容器的数据存储目录 quarkus.datasource.devservices.additional-properties=--volume=some_volume:/var/lib/postgresql/data
如果是MySQL,只需调整容器内的数据目录路径:
quarkus.datasource.devservices.additional-properties=--volume=some_volume:/var/lib/mysql
2. 提前创建目标卷
在启动应用前,需要确保你指定的some_volume已经存在,执行以下命令创建:
docker volume create some_volume
3. 关键注意事项
- 不同数据库的默认数据目录不同,需对应调整挂载路径,比如MariaDB也是
/var/lib/mysql,Oracle XE则是/opt/oracle/oradata。 - DevServices默认会在应用停止时销毁容器,但挂载的卷不会被删除,下次启动应用时复用该卷即可恢复之前的数据库数据。
- 如果不需要复用已有卷,只是想固定持久化存储,也可以直接指定卷名,DevServices会自动创建该卷(若不存在)。
内容的提问来源于stack exchange,提问作者y.luis.rojo
相关产品推荐
相关产品推荐

