编译最新的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内容并打包镜像啦...

标签: Java, Docker

相关文章

如何使用Go编写跨平台组件并让Java或PHP调用

在现代软件开发中,跨语言调用是一个常见的需求。假设我们有一个用Go语言编写的组件,我们希望Java或PHP能够直接调用这个组件中对外提供的方法。为了实现这一目标,我们可以使用以下几种方法:1. ...

linux下或macOS中配置maven及加速

下载 Maven 压缩包:访问 Maven 官方下载页面,下载你需要的版本。解压压缩包:将下载的压缩包解压到你选择的目录,例如 /opt/maven:sudo mkdir -p /opt/mav...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件