基於Alpine基礎鏡像構建H2 Database鏡像
0. 說明
x.x.xxx 爲h2版本,例: h2-1.4.197.jar
1. H2數據庫、Docker鏡像文件
Platform-Independent Ziphtml
alpine-3.8.0-1.0.tarjava
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. 啓動成功
![](http://static.javashuo.com/static/loading.gif)
8. 訪問 Web Console
![](http://static.javashuo.com/static/loading.gif)
9. 以 Server 模式, 在指定目錄(/home/h2/bin)下建立數據庫文件(容器中)
![](http://static.javashuo.com/static/loading.gif)
10. 查看指定的數據文件"h2database"已經在指定文件夾生成(宿主機)
![](http://static.javashuo.com/static/loading.gif)
- [注]
- JDBC URL"中指定了"/home/h2/bin"做爲數據文件的存儲路徑(在容器內部).
- docker run 命令中指定了宿主機和容器內目錄的掛載,數據文件在宿主機相應目錄下也能夠查看到.