编译最新的kkFileView并使用docker打包
kkFileView
是一个开源的文件预览服务,支持多种文件格式的在线预览。本文将详细介绍如何编译 kkFileView
的最新版本,并将其打包成 Docker 镜像。
1. 环境准备
在开始之前,确保你已经安装了以下工具:
- Git: 用于克隆
kkFileView
的代码仓库。 - JDK 1.8+:
kkFileView
需要 Java 环境来编译和运行。 - Maven: 用于构建项目。
- Docker: 用于打包和运行 Docker 镜像。
2. 克隆 kkFileView
代码仓库
首先,从 GitHub 上克隆 kkFileView
的最新代码:
git clone https://github.com/kekingcn/kkFileView.git
cd kkFileView
3. 编译 kkFileView
进入项目目录后,使用 Maven 进行编译:
mvn clean package -DskipTests
编译成功后,你会在 server/target/
目录下看到生成的 kkFileView-4.4.0-beta.tar.gz
文件(版本号可能不同)
好了,现在我们手工将 这个gz包拷到一个空目录下,然后我们将kkFileView目录下的Dockerfile文件拷过来,内容如下
FROM keking/kkfileview-base:4.4.0
ADD server/target/kkFileView-*.tar.gz /opt/
ENV KKFILEVIEW_BIN_FOLDER=/opt/kkFileView-4.4.0-beta/bin
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Dspring.config.location=/opt/kkFileView-4.4.0-beta/config/application.properties","-jar","/opt/kkFileView-4.4.0-beta/bin/kkFileView-4.4.0-beta.jar"]
当然你有可能会拉不下来这个kkfileview-base,反正我是没有拉下来,所以我又根据kkFileView -> docker -> kkfileview-base
中的 Dockerfile自己打包了一个 kkfileview-base , 然后自己写了一个新的Dockerfile,编译的时候,因为是用的ubuntu的底层,所以这儿的有个拷贝字体的操作,你记得下载字体 然后解压后再编译base环境,编译好后就可以留着用了,毕竟它的修改不多,除非修改liboffice或增加字体啥的,等这一切做好了,适当改下对应的FROM参数,及对应的版本号,就可以了
FROM ccr.ccs.tencentyun.com/lvtao/kk-base
ADD kkFileView-*.tar.gz /opt/
ENV KKFILEVIEW_BIN_FOLDER=/opt/kkFileView-4.4.0-beta/bin
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Dspring.config.location=/opt/kkFileView-4.4.0-beta/config/application.properties","-jar","/opt/kkFileView-4.4.0-beta/bin/kkFileView-4.4.0-beta.jar"]
编译它
docker build -t ccr.ccs.tencentyun.com/lvtao/kk-file:4.4.0-beta .
好了,这样就可以愉快的使用了...当然你要是想其它人一起用,可以将它docker push一下,分享给朋友即可
为了方便,写个Makefile
# 定义变量
IMAGE_NAME := ccr.ccs.tencentyun.com/lvtao/kk-fileview
TAR_FILE := $(shell ls kkFileView-*.tar.gz 2>/dev/null)
VERSION := $(shell echo $(TAR_FILE) | sed -E 's/.*kkFileView-(.*).tar.gz/\1/')
# 检查文件是否存在
ifeq ($(TAR_FILE),)
$(error "No tar.gz file found in the current directory.")
endif
# 动态生成Dockerfile
dockerfile:
@echo "Generating Dockerfile with version: $(VERSION)"
@echo "FROM ccr.ccs.tencentyun.com/lvtao/kk-base" > Dockerfile
@echo "ADD $(TAR_FILE) /opt/" >> Dockerfile
@echo "ENV KKFILEVIEW_BIN_FOLDER=/opt/kkFileView-$(VERSION)/bin" >> Dockerfile
@echo 'ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Dspring.config.location=/opt/kkFileView-$(VERSION)/config/application.properties","-jar","/opt/kkFileView-$(VERSION)/bin/kkFileView-$(VERSION).jar"]' >> Dockerfile
# 构建镜像的目标
build: dockerfile
@echo "Building Docker image with version: $(VERSION)"
docker build -t $(IMAGE_NAME):$(VERSION) .
# 推送镜像的目标
push: build
@echo "Pushing Docker image to registry: $(IMAGE_NAME):$(VERSION)"
docker push $(IMAGE_NAME):$(VERSION)
# 清理镜像的目标
clean:
@echo "Removing Docker image: $(IMAGE_NAME):$(VERSION)"
docker rmi $(IMAGE_NAME):$(VERSION)
@echo "Cleaning up Dockerfile"
rm -f Dockerfile
# 默认目标,执行构建和推送
all: build push
如果你有兴趣,甚至可以将java打包的这块儿也写到makefile里面去,当然我这儿没有写
我将打包好的tar.gz拷到这个位置,使用这个脚本make all
它就能自动的根据我的版本号,生成对应的Dockerfile内容并打包镜像啦...
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/tool/docker-kkfileview.html
转载时须注明出处及本声明