基于Alpine基础镜像构建H2 Database镜像
0. 说明
x.x.xxx 为h2版本,例: h2-1.4.197.jar
1. H2数据库、Docker镜像文件
Platform-Independent Zip
alpine-3.8.0-1.0.tar
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/sh
dir=$(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 9091
EXPOSE 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 命令中指定了宿主机和容器内目录的挂载,数据文件在宿主机相应目录下也可以查看到.