一、拉取源码
1. 官网信息
2. 开发环境准备
本教程假设你已具备基本的开发环境,包括 JDK、IDE(如 IntelliJ IDEA)、Maven 和 Docker。这些环境的安装与配置请参考相关文档。
3. 项目目录结构
使用 IDE(如 IntelliJ IDEA)打开下载的源码项目。

二、构建镜像
1. 构建kkfileview-base基础镜像
为了提高构建效率,kkFileView 采用了多阶段构建思路。基础运行环境(kkfileview-base)变动较少但构建耗时,而应用代码频繁更新,因此将两者分离。
1.1. 准备基础镜像
首先,查看 docker/kkfileview-base 目录下的 Dockerfile 文件,确认其使用的基础镜像。

可以看到,当前版本(以4.4.0为例)使用的是 ubuntu:24.04 镜像。

执行以下命令拉取基础镜像:
docker pull ubuntu:24.04
拉取完成后,使用 docker images 命令确认镜像已存在。

1.2. 构建基础镜像
进入 kkfileview-base 目录,准备构建。

执行以下命令开始构建基础镜像,注意标签 keking/kkfileview-base:4.4.0 需要与后续构建应用镜像的 Dockerfile 中指定的基础镜像标签保持一致。
docker build --tag keking/kkfileview-base:4.4.0 .

构建过程会持续较长时间,因为它需要安装 Java 运行时、中文字体等依赖。

当终端输出 FINISHED 字样时,表示构建完成。

再次使用 docker images 命令确认镜像已成功生成。

至此,基础镜像 kkfileview-base 构建完毕。
2. 构建kkfileview应用镜像
基础镜像准备好后,接下来需要打包应用代码并构建最终的应用镜像。
2.1. 使用Maven打包项目
在 IDE 中,使用 Maven 执行 package 命令,将源码打包成可部署的压缩包。

打包成功后,可在终端或构建日志中看到 BUILD SUCCESS 信息。

确认在 server/target/ 目录下生成了 kkFileView-4.4.0.tar.gz 等文件。

2.2. 构建应用镜像
切换到项目根目录(即包含外层 Dockerfile 的目录)。

执行以下命令构建最终的 kkfileview 应用镜像:
docker build --tag kkfileview:4.4.0 .

构建完成后,会输出 FINISHED 和镜像摘要信息。

使用 docker images 命令查看,确认名为 kkfileview,标签为 4.4.0 的镜像已存在。

至此,可用于部署的 Docker 镜像已准备就绪。
三、部署kkFileView服务
我们将构建好的镜像部署到服务器上。
1. 导出镜像文件
在本地开发机,将镜像导出为 .tar 文件,方便传输。
docker save -o D:/kkfileview.tar kkfileview:4.4.0
执行成功后,在指定目录下会生成 kkfileview.tar 文件。

2. 上传并导入到服务器
将 kkfileview.tar 文件上传到目标服务器的指定目录,例如 /www/wwwroot/kfv.greendevtool.cn/。

在服务器上,执行以下命令导入镜像:
docker load -i kkfileview.tar

3. 提取默认配置文件
为了能够挂载自定义配置,我们需要先从镜像中提取出默认的配置文件。
首先,创建一个临时容器来访问其内部文件:
docker run -d -p 8012:8012 kkfileview:4.4.0
命令会返回一个容器ID,请记录它(下例中使用的是 c9fc,请替换为你实际的容器ID)。

接着,从运行中的容器里将默认配置文件复制到宿主机当前目录的 conf 文件夹下:
mkdir conf && docker cp c9fc:/opt/kkFileView-4.4.0/config/application.properties ./conf/application.properties
注意:命令中的容器ID(c9fc)需要替换为上一步实际生成的容器ID。

配置文件拷贝完成后,删除这个临时容器:
docker rm -f c9fc
4. 编写Docker Compose编排文件
使用 Docker Compose 可以更方便地管理容器。在服务器项目目录下创建 docker-compose.yaml 文件:
version: "3.9"
services:
kkfileview:
image: kkfileview:4.4.0
container_name: kkfileview
restart: unless-stopped
ports:
- "8012:8012"
volumes:
- ./conf/application.properties:/opt/kkFileView-4.4.0/config/application.properties
environment:
- TZ=Asia/Shanghai
提示:高版本 Docker Compose 可能提示 version 属性已过时,可以将其移除,不影响使用。
5. 服务的启动、关闭与日志查看
5.1. 启动服务
在 docker-compose.yaml 文件所在目录,执行以下命令启动服务:
docker-compose up -d

服务启动后,在浏览器中访问 http://你的服务器IP:8012,如果看到 kkFileView 的官方介绍页面和支持的文件类型列表,说明部署成功。

5.2. 停止服务
要停止并移除由 Compose 创建的容器和网络,可以执行:
docker-compose down

5.3. 查看服务日志
若要实时查看容器日志以排查问题,可以使用:
docker-compose logs -f

通过以上步骤,你已经完成了从源码编译、构建 Docker 镜像到最终服务器部署 kkFileView 在线预览服务的全过程。这套方法也适用于其他需要自定义构建的 Java 应用容器化部署场景。如果在实践中遇到问题,欢迎到技术社区交流讨论。