访问docker容器中的持久H2 DB



我正在部署一个springboot应用程序,我想使用一个持久数据库。所以,在application.properties文件中,我有

spring.datasource.url=jdbc:h2:file:/home/ubuntu/db;AUTO_SERVER=TRUE;

现在,只要我在不使用容器的情况下启动这个应用程序,它就可以工作。现在,我构建了一个docker映像,并尝试运行该应用程序。Dockerfile看起来像

FROM maven:3-jdk-11 AS maven
ARG BUILD = target/build.jar
COPY ${BUILD} build.jar
EXPOSE 8080
USER spring:spring
ENTRYPOINT["java","-jar","/build.jar"]

现在,当我尝试启动它时,这不起作用,因为它在容器中搜索/home/ubuntu/db,而容器并不存在。有没有办法让docker容器中的应用程序访问主机文件夹/home/ubuntu/db?感谢您的回复。

缺少的部分是在运行容器时告诉docker将/home/ubuntu/db从主机装载到容器中。

你这样做:docker run -v <folder_on_host>:<folder_in_cointainer>

举个例子:docker run -v /home/ubuntu/db:/home/ubuntu/db

更多关于docker文档的信息:https://docs.docker.com/get-started/06_bind_mounts/

为了防止对其他人有帮助,要使用的完整命令是:

docker run -v /home/ubuntu/db:/home/ubuntu/db --privileged -p $HOST_PORT:$CONTAINER_PORT <image-name>

最新更新