基于Alpine基础镜像构建H2 Database镜像
0. 说明
x.x.xxx 为h2版本,例: h2-1.4.197.jar
1. H2数据库、Docker镜像文件
2. 解压下载的压缩文件, 解压后目录如下
h2-yyyy-mm-dd(此层文件夹省略)-h2 -bin h2.bat //Windows 控制台启动脚本 h2.sh //Linux 控制台启动脚本 h2-x.x.xxx.jar //jar包 h2w.bat //Windows 控制台启动脚本(不启动命令窗口) +docs //帮助文档 +service //通过wrapper配置为服务(限Windows) +src //源代码 build.bat //Windows构建脚本 build.sh //Linux构建脚本
3. 修改 /bin 文件夹下的 h2.sh 文件如下, 作为新的启动脚本(原脚本以Console方式启动, 新建一个新的启动脚本也可!)
#!/bin/shdir=$(dirname "$0")java -cp "$dir/h2-x.x.xxx.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Server \# TCP 连接端口-tcp -tcpAllowOthers -tcpPort 9092 \# WEB Console 访问端口(默认 8082)-web -webAllowOthers -webPort 9091 \"$@"[注] : 修改完文件后需要赋予执行权限 chmod 744 h2.sh
4. 编写 Dockerfile(文件位置在/h2目录下, 与/bin同级)
# H2 Database Dockerfile# 选定的基础镜像(这里选择了自制的Alpine基础镜像)FROM alpine-3.8.0:1.0# 存放 h2 文件的目录(只需要/bin目录即可)VOLUME /home/h2/bin# -tcp 9092 -web 9091EXPOSE 9092 9091# 启动数据库ENTRYPOINT /home/h2/bin/h2.sh
5. 构建 alpine-3.8.0-h2:1.0 镜像(在/h2目录下执行)
docker build --force-rm --rm --no-cache -t alpine-3.8.0-h2:1.0 .
6. 使用启动命令启动容器
docker run --name h2-database \-d \-p 9091:9091 \-p 9092:9092 \-v /home/develop/jdk1.8.0_181:/opt/java/default-jdk \-v /home/h2-2018-03-18/h2/bin:/home/h2/bin \alpine-3.8.0-h2:1.0[注]:- 容器的两个端口请根据实际情况自行映射- 镜像内部未安装JDK,此处使用外部映射- 为数据文件安全起见,映射数据存放目录至宿主机,方便备份、留存.
7. 启动成功
8. 访问 Web Console
9. 以 Server 模式, 在指定目录(/home/h2/bin)下创建数据库文件(容器中)
10. 查看指定的数据文件"h2database"已经在指定文件夹生成(宿主机)
- [注]
- JDBC URL"中指定了"/home/h2/bin"作为数据文件的存储路径(在容器内部).
- docker run 命令中指定了宿主机和容器内目录的挂载,数据文件在宿主机相应目录下也可以查看到.