Docker环境下kkfileview安装部署记录

官方文档地址:http://kkfileview.keking.cn/zh-cn/docs/production.html

源码地址:https://gitee.com/kekingcn/file-online-preview


一、方式一:docker直接拉取镜像部署

一般没有改代码的话用这种方式就可以,注意有nginx转发的话需要配置base.url参数

1. 拉取镜像4.1.0版本
docker pull keking/kkfileview:4.1.0

2. 运行
docker run -itd --name=kkfileview --volume=/data/java/kkfileview/config/application.properties:/opt/kkfileview:4.1.0/config/application.properties -p 8860:8012 kkfileview

容器内配置文件的目录在:
/opt/kkFileView-4.1.0/config/application.properties

注意:宿主机需要有/data/java/kkfileview/config/application.properties文件做映射,方便修改参数配置

二、方式二:手动部署

由于对代码做了一些更改,所以手动部署

1. 构建基础镜像

1. 上传文件到服务器
/data/java/kkfileviewbase

2. 进入目录
cd /data/java/kkfileviewbase

3. 构建基础镜像
docker build --tag kkfileview-base .

2. 代码改动

  Dockerfile文件

FROM kkfileviewbase
MAINTAINER chenjh "842761733@qq.com"
ADD kkFileView-4.1.0.tar.gz /opt/
ENV KKFILEVIEW_BIN_FOLDER /opt/kkFileView-4.1.0/bin
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Dspring.config.location=/opt/kkFileView-4.1.0/config/application.properties","-jar","/opt/kkFileView-4.1.0/bin/kkFileView-4.1.0.jar"]

 pom

    </build>
          <finalName>kkFileView-4.1.0</finalName>
    </build>

3. 部署

1. 上传文件到宿主机
/data/java/kkfileview

2. 上传配置到宿主机(application.properties)
/data/java/kkfileview/config/application.properties

1. 进入目录
cd /data/java/kkfileview

2. 构建镜像
docker build -t kkfileview .

3. 启动
docker run -itd --name=kkfileview --volume=/data/java/kkfileview/config/application.properties:/opt/kkfileview:4.1.0/config/application.properties -p 8860:8012 kkfileview

三、配置

base.url = ${KK_BASE_URL:default}

如果nginx转发了访问地址,需要配置此参数,不然访问ppt会报错,具体详见官方文档说明

四、使用

五、前端url处理

url解码   → base64编码 → url编码

注意:加一步url解码是为了防止拿到的url本来就是url编码过的地址

 六、ssl认证

使用kkfileview预览自签https word文件时,出现ssl证书错误
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

解决方法:

源码添加SslUtils类

package cn.keking.utils;


import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.*;



public class SslUtils {
    /**
     * 忽略HTTPS请求的SSL证书,必须在openConnection之前调用
     * @throws Exception
     */
    public static void ignoreSsl() throws Exception{
        HostnameVerifier hv = new HostnameVerifier() {
            @Override
            public boolean verify(String urlHostName, SSLSession session) {
                System.out.println("Warning: URL Host: " + urlHostName + " vs. " + session.getPeerHost());
                return true;
            }
        };
        trustAllHttpsCertificates();
        HttpsURLConnection.setDefaultHostnameVerifier(hv);
    }

    private static void trustAllHttpsCertificates() throws Exception {
        TrustManager[] trustAllCerts = new TrustManager[1];
        TrustManager tm = new miTM();
        trustAllCerts[0] = tm;
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, null);
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    }

    static class miTM implements TrustManager,X509TrustManager {
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
        public boolean isServerTrusted(X509Certificate[] certs) {
            return true;
        }
        public boolean isClientTrusted(X509Certificate[] certs) {
            return true;
        }
        @Override
        public void checkServerTrusted(X509Certificate[] certs, String authType)
                throws CertificateException {
            return;
        }
        @Override
        public void checkClientTrusted(X509Certificate[] certs, String authType)
                throws CertificateException {
            return;
        }
    }
}

 同时在下载文件DownloadUtils.download 方法里面增加

//忽略SSL认证
SslUtils.ignoreSsl();

如下

 public static ReturnResponse<String> downLoad(FileAttribute fileAttribute, String fileName) {
        String urlStr = fileAttribute.getUrl();
        ReturnResponse<String> response = new ReturnResponse<>(0, "下载成功!!!", "");
        String realPath = DownloadUtils.getRelFilePath(fileName, fileAttribute);
        try {
            URL url = WebUtils.normalizedURL(urlStr);
            if (isHttpUrl(url)) {
                //忽略SSL认证
                SslUtils.ignoreSsl();
                File realFile = new File(realPath);
                FileUtils.copyURLToFile(url, realFile);
            } else if (isFtpUrl(url)) {
                String ftpUsername = WebUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_USERNAME);
                String ftpPassword = WebUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_PASSWORD);
                String ftpControlEncoding = WebUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_CONTROL_ENCODING);
                FtpUtils.download(fileAttribute.getUrl(), realPath, ftpUsername, ftpPassword, ftpControlEncoding);
            } else {
                response.setCode(1);
                response.setMsg("url不能识别url" + urlStr);
            }
            response.setContent(realPath);
            response.setMsg(fileName);
            return response;
        } catch (Exception e) {
            logger.error("文件下载失败,url:{}", urlStr, e);
            response.setCode(1);
            response.setContent(null);
            if (e instanceof FileNotFoundException) {
                response.setMsg("文件不存在!!!");
            } else {
                response.setMsg(e.getMessage());
            }
            return response;
        }
    }

### 回答1: Docker在Windows 11上的安装部署可以通过以下步骤完成: 1. 首先,确保您的Windows 11系统支持虚拟化技术,并已启用。您可以在BIOS或UEFI设置中查找相关选项。 2. 接下来,下载并安装Docker Desktop for Windows。您可以从Docker官网下载最新版本的Docker Desktop for Windows。 3. 安装完成后,启动Docker Desktop for Windows,并登录您的Docker账户。 4. 在Docker Desktop for Windows中,您可以创建和管理Docker容器、镜像和服务。您可以使用Docker CLI或Docker Compose来管理这些资源。 5. 如果您需要在Windows 11上运行Linux容器,您需要启用WSL 2(Windows Subsystem for Linux 2)。您可以在Docker Desktop for Windows的设置中启用WSL 2,并选择您喜欢的Linux发行版。 6. 最后,您可以使用Docker Desktop for Windows来构建和部署您的应用程序。您可以使用Dockerfile来定义您的应用程序的环境和依赖关系,并使用Docker Compose来定义和管理多个容器的部署。 总之,Docker在Windows 11上的安装部署非常简单,只需几个简单的步骤即可完成。它可以帮助您快速构建、部署和管理容器化应用程序,提高开发效率和应用程序的可移植性。 ### 回答2: 随着Windows 11的发布,越来越多的用户将转向这个全新的操作系统。作为容器化技术中最流行的解决方案之一,Docker在Windows 11上的安装部署变得格外重要。 首先,您需要确保电脑上已经安装了Windows 11操作系统。Docker安装需要在Windows 11操作系统上进行,因此请先确保您的操作系统已经升级为最新版本。然后,您需要前往Docker官网并下载适用于Windows 11的版本。 在下载适用于Windows 11的Docker版本之后,您需要进行安装。在开启安装程序前,请务必关闭系统中所有的杀毒软件,并授予安装程序管理员权限。安装过程中,您需要选择“Docker Desktop”和“Windows Container”这两个组件,以确保Docker在Windows 11上能够完全运行。 安装完成后,您需要配置Docker运行环境,以确保您的操作系统和Docker可以正常协作。首先,在系统设置中开启Hyper-V虚拟化。然后,在Docker中开启Windows虚拟机模式,并设置相应的内存大小和CPU使用量。最后,您需要配置Docker的网络设置,以确保容器能够和外部网络通讯。 一旦您完成了所有的安装和配置步骤,就可以开始使用Docker在Windows 11上部署您的应用程序了。Docker提供了灵活的容器化技术,它能够使您的应用程序更加高效、可靠、安全,并且可以方便地进行管理和扩展。无论您是企业用户还是个人用户,都可以使用Docker来加速您的开发和部署流程,降低您的成本和风险。 ### 回答3: Docker在Windows 11上的安装部署可以分为以下几个步骤: 第一步,检查系统要求: 在安装Docker前,需要确保您的计算机满足以下要求: - 操作系统:Windows 11 Pro、Enterprise 或 Education版本 - 处理器:64 位、双核或更高 - 内存:至少 4 GB RAM - 存储空间:至少 20 GB 磁盘空间 第二步,下载Docker Desktop for Windows: 可以在Docker官网的下载页面下载适用于Windows 11的Docker Desktop for Windows安装程序。下载完成后,双击安装程序并按照提示安装。 第三步,启用Hyper-V和Windows容器: Docker需要依赖于Windows 11的Hyper-V和Windows容器功能,因此需要先在计算机上启用这两个功能。 您可以按照以下步骤启用Hyper-V和Windows容器功能: 1. 点击“开始”菜单并输入“Windows 功能”关键字。在搜索结果列表中,单击“打开或关闭Windows功能”。 2. 在Windows功能界面中选中“Hyper-V”和“Windows 容器”复选框,然后单击“确定”按钮。 3. 等待系统完成配置,然后重启计算机以使更改生效。 第四步,配置Docker: 在完成Docker安装后,需要对其进行配置才能正常使用。可以按照以下步骤配置Docker: 1. 单击桌面上的Docker图标以启动Docker Desktop。 2. 打开Docker设置并选择“资源”标签页。 3. 指定Docker的CPU和内存使用量,然后单击“应用并重启”按钮。 4. 当Docker重新启动时,它将使用您指定的CPU和内存设置。 第五步,测试Docker: 在完成Docker的配置后,需要测试一下是否已成功安装。可以按照以下步骤进行测试: 1. 打开Docker终端并输入以下命令以检查Docker是否正确安装docker run hello-world 2. 如果Docker已正确安装,则会显示一条“Hello from Docker”消息。 通过以上几个步骤,您可以在Windows 11上成功地安装部署Docker,并开始使用它来构建、部署和管理容器应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值