当前位置: 首页 > article >正文

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

【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对于快速搭建和运行应用程序的有效性和便捷性。

相关文章:

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

【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 版本 四、下载Pd…...

Redis 常用数据类型和命令使用

目录 1 string 2 hash 3 list 4 set集合 5 zset有序集合 1 string 值可以是字符串、数字和二进制的value&#xff0c;值最大不能超过512MB 应用场景&#xff1a; 应用程序缓存 计数器 web共享session 限速 1.1 设置单个键值 set <key> value [EX seconds|PX…...

【Linux系统】第八节—进程概念(上)—冯诺依曼体系结构+操作系统+进程及进程状态+僵尸进程—详解!

hi&#xff0c;我是云边有个稻草人 偶尔中二的博主^(*&#xffe3;(oo)&#xffe3;)^&#xff0c;与你分享专业知识&#xff0c;祝博主们端午节快乐&#xff01; Linux—本节博客所属专栏—持续更新中—欢迎订阅&#xff01; 目录 一、冯诺依曼体系结构 二、操作系统(Opera…...

WPF 全局加载界面、多界面实现渐变过渡效果

WPF 全局加载界面与渐变过渡效果 完整实现方案 MainWindow.xaml <Window x:Class"LoadingScreenDemo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&quo…...

WebSocket与实时对话式AI服务的集成

WebSocket与实时对话式AI服务的集成 在现代对话式AI系统中,传统的HTTP请求-响应模型已难以满足实时交互的体验需求。特别是用户对响应速度、逐字输出、会话上下文保持等方面提出更高要求时,需要一种能够建立持久连接并支持双向通信的协议。WebSocket正是在这一背景下,成为A…...

【xmb】】内部文档148344599

这里写自定义目录标题 CyberDog 2 仿真智能物流配送系统 – 初赛设计报告摘要目录1 引言2 任务与需求分析3 系统总体设计4 核心算法与模块实现5 仿真测试与结果分析6 结论与展望 CyberDog 2 仿真智能物流配送系统 – 初赛设计报告 团队名称&#xff1a; &#xff08;晚点写&am…...

MobaXterm国内下载与安装使用教程

MobaXterm是一款为 Windows 用户量身打造的远程终端工具&#xff0c;它将多种网络功能集成在一个轻量级、便携式的界面中&#xff0c;尤其适合需要频繁与远程主机交互的开发者、系统运维工程师以及科研技术人员。无论是管理 Linux 服务器、远程执行命令&#xff0c;还是图形化运…...

数据结构——优先级队列(PriorityQueue)

1.优先级队列 优先级队列可以看作队列的另一个版本&#xff0c;队列的返回元素是由是由插入顺序决定的&#xff0c;先进先出嘛&#xff0c;但是有时我们可能想要返回优先级较高的元素&#xff0c;比如最大值&#xff1f;这种场景下就由优先级队列登场。 优先级队列底层是由堆实…...

代谢组数据分析(二十六):LC-MS/MS代谢组学和脂质组学数据的分析流程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包依赖包安装包加载需要的R包数据下载以及转换mzML数据预处理代谢物注释LipidFinder过滤MultiABLER数据预处理过滤补缺失值对数变换数据标准化下游数据分析总结系统信息参考介…...

服务器上用脚本跑python深度学习的注意事项(ubantu系统)

bash: $\r: command not found 问题原因&#xff1a; 出现 bash: $\r: command not found 以及路径中出现 \r 通常是因为脚本文件是在Windows系统下编辑&#xff0c;然后在Linux&#xff08;如Ubuntu&#xff09;系统中运行。在Windows系统中&#xff0c;文本文件的换行符是 \…...

【ARM】【FPGA】【硬件开发】Chapter.1 AXI4总线协议

Chapter.1 AXI4总线协议 作者&#xff1a;齐花Guyc(CAUC) 一、总线介绍 AXI4总线 AXI4总线就像是SoC内部的“高速公路”&#xff0c;负责在不同硬件模块之间高效传输数据。 AXI4协议通过 5个独立通道 传输数据和控制信号&#xff0c;每个通道都有自己的信号线&#xff0c;互…...

青少年编程与数学 02-020 C#程序设计基础 10课题、桌面应用开发

青少年编程与数学 02-020 C#程序设计基础 10课题、桌面应用开发 一、桌面应用1. 主要特点2. 常见类型3. 优势4. 局限性 二、开发步骤1. 准备工作2. 创建项目3. 开发应用4. 运行调试5. 打包发布 三、Windows 窗体应用&#xff08;一&#xff09;定义&#xff08;二&#xff09;特…...

把 jar 打包成 exe

1. 把自己的项目先正常打成jar包 2. 使用exe4j工具将jar转换为exe 2.1 exe4j下载地址&#xff1a;https://www.ej-technologies.com/download/exe4j/files 2.2 下载完成之后激活 2.3 可以点击Change License&#xff0c;输入秘钥L-g782dn2d-1f1yqxx1rv1sqd 2.4 直接下一步…...

【目标检测】检测网络中neck的核心作用

1. neck最主要的作用就是特征融合&#xff0c;融合就是将具有不同大小感受野的特征图进行了耦合&#xff0c;从而增强了特征图的表达能力。 2. neck决定了head的数量&#xff0c;进而潜在决定了不同尺度样本如何分配到不同的head&#xff0c;这一点可以看做是将整个网络的多尺…...

【经验】Ubuntu中设置terminator的滚动行数、从Virtualbox复制到Windows时每行后多一空行

1、设置terminator的滚动行数 1.1 问题描述 在终端 terminator 中&#xff0c;调试程序时&#xff0c;只能查看有限行数的打印日志&#xff0c;大约是500行&#xff0c;怎么能增加行数 1.2 解决方法 1&#xff09;安装terminator sudo apt install terminator和 terminato…...

使用微软最近开源的WSL在Windows上优雅的运行Linux

install wsl https://github.com/microsoft/WSL/releases/download/2.4.13/wsl.2.4.13.0.x64.msi install any distribution from microsoft store, such as kali-linux from Kali office website list of distribution PS C:\Users\50240> wsl -l -o 以下是可安装的有…...

HackMyVM-Teacher

信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.43.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-01 01:02 EDT Nmap scan report for 192.168.43.1 Host is up (0.0084s latency). MAC Address: C6:45:66:05:91:88 (Unknow…...

BugKu Web渗透之矛盾

开启场景&#xff0c;打开网页。发现是一段php代码。 这段代码也很好理解&#xff0c;就是get方式传参num&#xff0c;如果num不是数字类型&#xff0c;那么输出num的值&#xff0c;并且num1时&#xff0c;输出flag的值。 首先看看is_numeric的意思。 开始我想到了使用科学技术…...

hot100 -- 4.子串系列

1.和为 K 的子数组 问题&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 方法1&#xff1a;暴力枚举 # 方法1&#xff1a;暴力枚举&#xff08;遍历子数组起点和终点&…...

Python实现P-PSO优化算法优化卷积神经网络CNN回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 随着人工智能和深度学习技术的快速发展&#xff0c;卷积神经网络&#xff08;CNN&#xff09;在图像分类、目标检测…...

ssm 学习笔记day03

环境搭建 spring配置数据库 1.在pom.xml安装相应的依赖 2.在properties里面配置数据库的相关信息&#xff0c;需要强调的一点是&#xff0c;一定不要在properties里面添加任何空格&#xff0c;否则就会像我一样搞了两小时&#xff0c;数据一直报错&#xff0c;然后发现是空格的…...

mkdir: cannot create directory ‘gitlab-stu’: No space left on device

Linux中创建目录时报错“mkdir: cannot create directory ‘gitlab-stu’: No space left on device”&#xff0c;磁盘空间不足。 使用df命令查看&#xff0c;发现 / 下面use%占满了&#xff1a; 查看inode使用情况&#xff1a; 可以看到docker的数据大部分存放在/var/lib/do…...

【前端面经】云智慧一面

写在前面&#xff1a;面经只是记录博主遇到的题目。每题的答案在编写文档的时候已经有问过deepseek&#xff0c;它只是一种比较普世的答案&#xff0c;要学得深入还是靠自己 Q&#xff1a;手撕代码&#xff0c;两个有序数组排序 A&#xff1a; function mysort(arr1, arr2) {…...

ESP8285乐鑫SOCwifi芯片32bit MCU和2.4 GHz Wi-Fi

简介 ESP8285 拥有完整的且⾃成体系的 Wi-Fi ⽹络功能&#xff0c;既能够独⽴应⽤&#xff0c;也可以作为从机搭载于其他主机 MCU 运⾏。当 ESP8285 独⽴应⽤时&#xff0c;能够直接从外接 flash 中启动。内置的⾼速缓冲存储器有利于提⾼系统性能&#xff0c;并且优化存储系统。…...

DL00916-基于深度学习的金枪鱼各类别目标检测含完整数据集

文末有获取方式 &#x1f680; 基于深度学习的金枪鱼目标检测——开创智能识别新领域&#xff01; 在计算机视觉和深度学习的快速发展中&#xff0c;目标检测 技术已成为提升行业效率的核心利器。而对于海洋生物领域&#xff0c;尤其是金枪鱼的 目标检测&#xff0c;更是填补了…...

不可变集合类型转换异常

记录一个异常&#xff1a;class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目录 1、原因2、解决方式一3、解决方式二4、关于不可变集合的补充4.1 JDK8和9的对比4…...

【PyQt5】从零开始的PyQt5 - QLabel篇

从零开始的PyQt5 - QLabel篇 引言一、简述二、例程2.1 显示到QWidget窗口上2.2 重新设置Label大小和对齐方式2.3 添加内容&#xff0c;设置边框2.4 显示富文本 三、参考 引言 QLabel主要用于显示文本或图像&#xff0c;不提供用户交互功能。本文主要简述PyQt5中的QLabel以及展…...

多模态AI的企业应用场景:视觉+语言模型的商业价值挖掘

关键词&#xff1a;多模态AI | 视觉语言模型 | 企业应用 | 商业价值 | 人工智能 &#x1f4da; 文章目录 一、引言&#xff1a;多模态AI时代的到来二、多模态AI技术架构深度解析三、客服场景&#xff1a;智能化服务体验革命四、营销场景&#xff1a;精准投放与创意生成五、研…...

数据结构(7)树-二叉树-堆

一、树 1.树的概述 现实生活中可以说处处有树。 在计算机里&#xff0c;有一种数据结构就是像现实中的树一样&#xff0c;有根&#xff0c;有分支&#xff0c;有叶子&#xff1b;一大片树就叫做森林。 这些性质抽象到计算机里也叫树&#xff0c;大致长这个样子&#xff1a; …...

时序数据库IoTDB基于云原生的创新与实践

概述 Apache IoTDB 是一款独立自研的物联网时序数据库&#xff0c;作为 Apache 基金会的顶级项目&#xff0c;它融合了产学研的优势&#xff0c;拥有深厚的科研基底。IoTDB 采用了端边云协同的架构&#xff0c;专为物联网设计&#xff0c;致力于提供极致的性能。 数据模型 I…...