【Docker项目实战篇】Docker部署PDF查看器PdfDing

article/2025/6/24 1:20:12

【Docker项目实战篇】Docker部署PDD查看器PdfDing

  • 一、PdfDing介绍
    • 1.1 PdfDing简介
    • 1.2 PdfDing主要特点
    • 1.3 主要使用场景
  • 二、本次实践规划
    • 2.1 本地环境规划
    • 2.2 本次实践介绍
  • 三、本地环境检查
    • 3.1 检查Docker服务状态
    • 3.2 检查Docker版本
    • 3.3 检查docker compose 版本
  • 四、下载PdfDing镜像
  • 五、部署PdfDing
    • 5.1 创建部署目录
    • 5.2 编辑部署文件
    • 5.3 创建PdfDing容器
    • 5.4 查看PdfDing容器状态
    • 5.5 查看PdfDing容器日志
  • 六、访问PdfDing服务
    • 6.1 访问PdfDing初始页
    • 6.2 注册账号
  • 七、PdfDing工具的基本使用
    • 7.1 设置主题
    • 7.2 上传文档
    • 7.3 在线浏览文档效果
  • 八、总结

一、PdfDing介绍

1.1 PdfDing简介

PdfDing 是一种轻量级的应用程序,可以通过 Docker 轻松地在服务器上设置。它提供了一个基于Web的界面,允许用户通过浏览器上传、管理和阅读PDF文档。这款工具注重用户体验,提供了诸如暗黑模式和记忆阅读位置等实用功能,确保了用户能够享受流畅的文档阅读体验。

1.2 PdfDing主要特点

  • 多设备支持:可以在多种设备(如桌面电脑、平板电脑和手机)上无缝浏览PDF文件。
  • 标签整理:用户可以使用标签来组织他们的PDF文档,这有助于更有效地管理和检索文档。
  • 简洁界面:拥有一个干净且响应式的用户界面设计,使得导航变得直观简单。
  • 暗黑模式:提供暗黑主题选项,减少眼睛疲劳,特别是在低光照条件下阅读时。
  • 记住位置:自动记录用户的阅读进度,让用户可以从上次停止的地方继续阅读。
  • 单点登录(SSO):通过开放ID连接(OIDC)协议支持单点登录,简化了身份验证流程。
  • 自我服务:每个用户都可以自行上传自己的PDF文件,而不需要管理员介入管理内容。

1.3 主要使用场景

  • 教育机构:教师和学生可以方便地分享教材、作业等学习材料。
  • 企业办公:公司员工可用来共享报告、合同等正式文档,并保持良好的文档管理习惯。
  • 研究团体:研究人员之间交换论文和其他研究资料变得更加容易。
  • 个人用途:对于需要经常处理电子书或其他形式的PDF文档的人来说非常有用,比如学生准备考试或是专业人士进行持续教育。

二、本次实践规划

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为|Ubuntu 22.04.1。

hostnameIP地址操作系统版本Docker版本PdfDing镜像版本
ubuntu-001r192.168.3.251Ubuntu 22.04.1 LTS24.0.70.3.4

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署PDD查看器PdfDing。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

root@ubuntu-001:~# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since Sun 2024-09-29 08:29:36 UTC; 18min ago
TriggeredBy: ● docker.socketDocs: https://docs.docker.comMain PID: 5227 (dockerd)Tasks: 123Memory: 272.5MCPU: 9.692sCGroup: /system.slice/docker.service├─5227 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

3.2 检查Docker版本

检查Docker版本

root@ubuntu-001:~# docker -v
Docker version 24.0.7, build 24.0.7-0ubuntu2~22.04.1

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

root@ubuntu-001:~#  docker compose version
Docker Compose version v2.19.1

四、下载PdfDing镜像

拉取PdfDing镜像,镜像名称为:mrmn/pdfding:0.3.4

root@ubuntu-001:/data/pdfding# docker pull  mrmn/pdfding:0.3.4
0.3.4: Pulling from mrmn/pdfding
c6a83fedfae6: Already exists
6f14051a7863: Pull complete
e1e82c77ac9c: Pull complete
334024c37334: Pull complete
2240f6c2d99c: Pull complete
3a640e0e83b1: Pull complete
a2240f381d2e: Pull complete
2e996bc1859a: Pull complete
4f4fb700ef54: Pull complete
a1f4d8ed2f26: Pull complete
655f5f94961c: Pull complete
Digest: sha256:ba0b9f6b650af6240aa7bc12a3b10d2a0fc36dfaf69d4de2e1485d18414dc168
Status: Downloaded newer image for mrmn/pdfding:0.3.4
docker.io/mrmn/pdfding:0.3.4

五、部署PdfDing

5.1 创建部署目录

  • 创建部署目录
mkdir -p /data/pdfding && cd /data/pdfding

5.2 编辑部署文件

/data/pdfding目录,创建docker-compose.yaml文件,内容如下,其中宿主机映射端口、登录账号密码等可以自定义配置。

version: '3'services:pdfding:image: mrmn/pdfding:0.3.4container_name: pdfdingrestart: alwaysports:- 8020:8000volumes:- ./data:/home/nonroot/pdfding/db- ./media:/home/nonroot/pdfding/mediaenvironment:- HOST_NAME=192.168.3.251- SECRET_KEY=some_secret- CSRF_COOKIE_SECURE=FALSE- SESSION_COOKIE_SECURE=FALSE

5.3 创建PdfDing容器

执行以下命令,创建PdfDing容器。

root@ubuntu-001:/data/pdfding# docker compose up -d
[+] Running 2/2✔ Network pdfding_default  Created                                                                                                                      0.1s✔ Container pdfding        Started                                                                                                                      0.4s

5.4 查看PdfDing容器状态

检查PdfDing容器状态状态,确保PdfDing容器正常启动。

root@ubuntu-001:/data/pdfding# docker compose ps
NAME                IMAGE                COMMAND             SERVICE             CREATED             STATUS              PORTS
pdfding             mrmn/pdfding:0.3.4   "./bootstrap.sh"    pdfding             23 seconds ago      Up 22 seconds       0.0.0.0:8020->8000/tcp, :::8020->8000/tcp

5.5 查看PdfDing容器日志

检查PdfDing容器日志,确保PdfDing服务正常运行。

root@ubuntu-001:/data/pdfding# docker compose logs
pdfding  | Operations to perform:
pdfding  |   Apply all migrations: account, auth, contenttypes, pdf, sessions, socialaccount, users
pdfding  | Running migrations:
pdfding  |   No migrations to apply.
pdfding  | [2024-09-29 09:07:34 +0000] [12] [INFO] Starting gunicorn 23.0.0
pdfding  | [2024-09-29 09:07:34 +0000] [12] [INFO] Listening at: http://0.0.0.0:8000 (12)
pdfding  | [2024-09-29 09:07:34 +0000] [12] [INFO] Using worker: sync
pdfding  | [2024-09-29 09:07:34 +0000] [13] [INFO] Booting worker with pid: 13
pdfding  | [2024-09-29 09:07:34 +0000] [14] [INFO] Booting worker with pid: 14
pdfding  | [2024-09-29 09:07:34 +0000] [15] [INFO] Booting worker with pid: 15

六、访问PdfDing服务

6.1 访问PdfDing初始页

访问地址:http://192.168.3.251:8020,将IP替换为自己服务器IP地址。如果无法访问到以下页面,则检查宿主机的防火墙是否关闭或者放行相关端口,云服务器则还需要设置安全组规则。

在这里插入图片描述

6.2 注册账号

点击:sign up,进入账号注册页。

在这里插入图片描述

自定义注册账号信息,确认注册即可。

在这里插入图片描述

在这里插入图片描述

七、PdfDing工具的基本使用

7.1 设置主题

Settings——Theme,可编辑修改主题样式。

在这里插入图片描述

7.2 上传文档

点击“Add PDF”选项,上传本地PDF文章。

在这里插入图片描述

在这里插入图片描述

7.3 在线浏览文档效果

点击上传的PDF文档,可以在线浏览文档。

在这里插入图片描述

在这里插入图片描述

八、总结

通过Docker部署PdfDing PDF查看器的过程非常顺利,仅需几条简单的命令就完成了环境搭建。 PdfDing在容器中的运行表现稳定,提供了流畅的PDF管理和阅读体验。整个部署过程不仅快速而且易于维护,充分展示了Docker在简化应用部署方面的优势。这次实战进一步验证了Docker对于快速搭建和运行应用程序的有效性和便捷性。


http://www.hkcw.cn/article/RPOgFZxrir.shtml

相关文章

AE 脚本表达式错误 Default ColorSelectionwhile (true){ break;} }

这个问题卡了我挺久的, 都没有解决, 暂时放在这,有解决办法来写。 也希望看到的朋友能帮忙解答

MyBatis01

目录 一、Mybatis 1.1 什么是 MyBatis? 1.2 ORM思想 Hibernate Mybatis(ibatis) 持久层技术对比 二、mybatis基础操作流程 2.1 引入jar包 2.2 mybatis核心配置文件 2.3 java文件和sql文件相分离 2.4 mybatis框架核心类&#xff0c…

C56-亲自实现字符串拷贝函数

一 strcpy简介 功能:将源字符串(包括 \0)复制到目标地址。 原型: char *strcpy(char *dest, const char *src);参数: dest:目标地址(需足够大)。src:源字符串&#xf…

设计模式——简单工厂模式(创建型)

摘要 本文主要介绍了简单工厂模式,包括其定义、结构、实现方式、适用场景、实战示例以及思考。简单工厂模式是一种创建型设计模式,通过工厂类根据参数决定创建哪一种产品类的实例,封装了对象创建的细节,使客户端无需关心具体类的…

山东大学软件学院项目实训-基于大模型的模拟面试系统-面试官和面试记录的分享功能(2)

本文记录在发布文章时&#xff0c;可以添加自己创建的面试官和面试记录到文章中这一功能的实现。 前端 首先是在原本的界面的底部添加了两个多选框&#xff08;后期需要美化调整&#xff09; 实现的代码&#xff1a; <el-col style"margin-top: 1rem;"><e…

【Hot 100】121. 买卖股票的最佳时机

目录 引言买卖股票的最佳时机我的解题 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot 100】121. 买卖股票的最佳时机❣️ 寄语&#xff1a;书到用时方恨少&#xff0c;事非经过不知难&#xff01; 引…

《Spring Cloud Gateway 快速入门:从路由到自定义 Filter 的完整教程》​

1.网关介绍 在前面的学习中&#xff0c;我们通过Eureka和Nacos解决了辅助注册&#xff0c;使用Spring Cloud LoadBalance解决了负载均衡的问题&#xff0c;使用OpenFeign解决了远程调用的问题。 但是当前的所有微服务的接口都是直接对外暴露的&#xff0c;外部是可以直接访问…

高并发抽奖系统优化方案

引子 最近接触了一个抽奖的项目&#xff0c;由于用户量比较大&#xff0c;而且第三方提供的认证接口并发量有限&#xff0c;为了保证服务的高可用性&#xff0c;所以对高并限制发有一定的要求。经过一系列研究和讨论&#xff0c;做出了以下一些优化方案。 需求分析 根据用户量…

【Doris基础】Apache Doris中的Segment详解:存储与查询的核心组件

目录 1 Segment概述 1.1 什么是Segment 1.2 Segment的重要性 2 Segment的物理结构 2.1 Segment文件组成 2.2 列数据存储格式 3 Segment的生命周期 3.1 Segment创建 3.2 Segment合并(Compaction) 3.3 Segment过期与清理 4 Segment与查询处理 4.1 查询中的Segment剪枝…

JAVA中的枚举

代码示例 理论 枚举的行为多态 public enum MyLockStrategy {SKIP_FAST(){Overridepublic boolean tryLock(RLock lock, MyLock prop) throws InterruptedException {return lock.tryLock(0, prop.leaseTime(), prop.unit());}},FAIL_AFTER_RETRY_TIMEOUT(){Overridepublic bo…

电脑驱动程序更新工具, 3DP Chip 中文绿色版,一键更新驱动!

介绍 3DP Chip 是一款免费的驱动程序更新工具&#xff0c;可以帮助用户快速、方便地识别和更新计算机硬件驱动程序。 驱动程序更新工具下载 https://pan.quark.cn/s/98895d47f57c 软件截图 软件特点 简单易用&#xff1a;用户界面简洁明了&#xff0c;操作方便&#xff0c;…

day61—DFS—省份数量(LeetCode-547)

题目描述 有 n 个城市&#xff0c;其中一些彼此相连&#xff0c;另一些没有相连。如果城市 a 与城市 b 直接相连&#xff0c;且城市 b 与城市 c 直接相连&#xff0c;那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市&#xff0c;组内不含其他没有相连的城市…

MySql(十)

目录 准备工作 1&#xff09;准备一张表 2&#xff09;插入数据 1.排序 1--asc 升序 2--desc 降序 3--组合排序 2.聚合函数 1.count(字段名) 2.sum(字段名) 3.max(字段名) 4.min(字段名) 5.avg(字段名) 准备工作 1&#xff09;准备一张表 CREATE table role(roleid INT PRIMAR…

LabVIEW Val (Sgnl) 属性

在 LabVIEW 事件驱动架构中&#xff0c;Val (Sgnl) 属性&#xff08;Value (Signaling)&#xff09;是实现编程触发与用户交互行为一致性的关键技术。与普通 Value 属性不同&#xff0c;Val (Sgnl) 在修改控件值的同时强制生成值改变事件&#xff0c;确保程序逻辑与 UI 交互保持…

解常微分方程组

Euler法 function euler_method % 参数设置 v_missile 450; % 导弹速度 km/h v_enemy 90; % 敌艇速度 km/h % 初始条件 x0 0; % 导弹初始位置 x y0 0; % 导弹初始位置 y xe0 120; % 敌艇初始位置 y t0 0; % 初始时间 % 时间步长和总时间 dt 0.01; % 时间步长 t_final …

「Java教案」数据类型、变量与常量

课程目标 1&#xff0e;知识目标 能够根据Java基本数据类型的分类、存储规则及适用场景&#xff0c;合理的选择数据类型。能在合适的场景下正确声明和定义变量和常量。能够根据显式和隐式数据类型转换的规则与风险&#xff0c;合理的进行数据类型转换。 2&#xff0e;能力目…

本地部署基于 Kibana 开源搜索引擎 Elasticsearch 并实现外部访问

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。Kibana 是一个开源可视化工具&#xff0c;用于与 Elasticsearch 进行集成&#xff0c;提供大量数据分析。 本文将详细的介绍如何利用 Docker 在本地部署…

【Ollama】windows部署ollama并运行模型

一、Ollama安装 1.下载Ollama 官网&#xff1a;https://ollama.com/ 2.安装 点击下载 安装完成后打开cmd窗口 键盘按住WinR输入cmd 3.Ollama常用指令 指令说明ollama list查看本地已下载的模型列表ollama pull <模型名>下载模型&#xff08;如 ollama pull llama…

Linux入门(十二)服务管理

服务本质就是进程&#xff0c;但是在后台运行&#xff0c;通常会监听某个端口&#xff0c;等等其他的程序来访问 systemctl 管理指令 systemctl [start | stop | restart | reload | status ] systemctl status NetworkManagersystemctl 服务是在/usr/lib/systemd/system 查看 …

在Ubuntu20.04上安装ROS Noetic

本章教程,主要记录在Ubuntu20.04上安装ROS Noetic。 一、添加软件源 sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list二、设置秘钥 …