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

【Docker项目实战】使用Docker部署Plik临时文件上传系统

【Docker实战项目】使用Docker部署Plik 临时文件上传系统

  • 一、Plik介绍
    • 1.1 Plik简介
    • 1.2 Plik特点
  • 二、本地环境介绍
    • 2.1 本地环境规划
    • 2.2 本次实践介绍
  • 三、本地环境检查
    • 3.1 检查Docker服务状态
    • 3.2 检查Docker版本
    • 3.3 检查docker compose 版本
  • 四、下载Plik镜像
  • 五、部署Plik临时文件上传系统
    • 5.1 创建挂载目录
    • 5.2 创建Plik容器
    • 5.3 检查plik容器状态
    • 5.4 检查plik容器日志
  • 六、Plik的基本使用
    • 6.1 访问Plik首页
    • 6.2 Plik的基本设置
    • 6.3 上传测试文件
    • 6.4 分享文件

一、Plik介绍

1.1 Plik简介

Plik 是 golang 中的一个可扩展且友好的临时文件上传系统(类似 Wetransfer)。

1.2 Plik特点

  • 强大的命令行客户端
  • 易于使用的 Web UI
  • 多种数据后端:文件、OpenStack Swift、S3、Google Cloud Storage
  • 多个元数据后端:Sqlite3、PostgreSQL、MySQL
  • OneShot:文件在第一次下载后被销毁
  • 流:文件从上传器流式传输到下载器(服务器端不存储任何内容)
  • 可移动 :赋予上传者随时删除文件的能力
  • TTL : 自定义到期日期
  • 密码:使用登录名/密码保护上传(Auth Basic)
  • 注释:添加自定义消息(Markdown 格式)
  • 用户身份验证 : 本地 / Google / OVH
  • 上传限制:源IP / 令牌
  • 管理员 CLI 和 Web UI
  • 服务器端加密(使用 S3 数据后端)
  • 多架构构建和 docker 镜像
  • 分享X上传器:直接集成到 ShareX 中
  • plikSharp:Plik 的 .NET API 客户端
  • Filelink for Plik : Thunderbird 插件将附件上传到 Plik

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostnameIP地址操作系统版本Docker版本
dokcer192.168.3.166centos 7.62 20.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署Plik临时文件上传系统。

三、本地环境检查

3.1 检查Docker服务状态

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

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: active (running) since Wed 2023-11-22 17:32:04 CST; 6 days agoDocs: https://docs.docker.comMain PID: 11795 (dockerd)Tasks: 33Memory: 164.9MCGroup: /system.slice/docker.service

3.2 检查Docker版本

检查Docker版本

[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

3.3 检查docker compose 版本

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

[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

四、下载Plik镜像

从docker hub拉取Plik镜像

[root@jeven ~]# docker pull rootgg/plik
Using default tag: latest
latest: Pulling from rootgg/plik
188c0c94c7c5: Pull complete
f96bea0e51ed: Pull complete
ae9f8219d19c: Pull complete
d803b156e271: Pull complete
aaef3faf0191: Pull complete
Digest: sha256:8d88186c07c9aa67c5db2062920be6eb04f975c75257589381e82149c5a4a796
Status: Downloaded newer image for rootgg/plik:latest
docker.io/rootgg/plik:latest

五、部署Plik临时文件上传系统

5.1 创建挂载目录

创建挂载目录

mkdir -p /data/plik/data

设置权限

chmod -R 777 /data/plik/

5.2 创建Plik容器

使用docker-cli快速部署plik容器

docker run  -d  \
--name plik \
-p 8566:8080  \
-v /data/plik/data:/home/plik/server/files  \
rootgg/plik

使用docker compose运行plik容器

version: "3"
services:plik:image: rootgg/plikcontainer_name: plikports:- "8566:8080"volumes:- /data/plik/data:/home/plik/server/files
  • 使用docker-compose.yaml文件创建plik容器
[root@jeven plik]# docker compose up -d
[+] Running 2/2⠿ Network plik_default  Created                                                                                        0.3s⠿ Container plik        Started                                                                                        1.8s

5.3 检查plik容器状态

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

[root@jeven plik]#  docker compose ps
NAME                COMMAND                SERVICE             STATUS              PORTS
plik                "/bin/sh -c ./plikd"   plik                running             0.0.0.0:8566->8080/tcp, :::8566->8080/tcp

5.4 检查plik容器日志

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

[root@jeven plik]#  docker compose logs
plik  | [11/28/2023 12:21:13][INFO    ] Starting plikd server v1.3.1
plik  | [11/28/2023 12:21:13][INFO    ] Starting server at http://0.0.0.0:8080
plik  | [11/28/2023 12:21:13][INFO    ] Will clean old uploads in 10677 seconds.

在这里插入图片描述

六、Plik的基本使用

6.1 访问Plik首页

访问地址:http://192.168.3.166:8566/,将IP换为自己服务器IP地址。

在这里插入图片描述

6.2 Plik的基本设置

在左侧第一个选项,点击启动后,第一次下载,文件立即从服务器删除。

在这里插入图片描述

在左侧第二个选项,点击启动后,开启流媒体。

在这里插入图片描述

在左侧第三个选项,点击启用后,上传者可以删除文件。

在这里插入图片描述

在左侧第四个选项,点击启用后,上传和下载之前需要输入密码。

在这里插入图片描述

在左侧第五个选项,点击启用后,可以在上传的内容中添加评论。

在这里插入图片描述

6.3 上传测试文件

将所有Plik设置选项都设置关闭状态

在这里插入图片描述

点击上传文件

在这里插入图片描述
在这里插入图片描述

6.4 分享文件

复制文件链接到其他电脑即可下载。

在这里插入图片描述

相关文章:

【Docker项目实战】使用Docker部署Plik临时文件上传系统

【Docker实战项目】使用Docker部署Plik 临时文件上传系统 一、Plik介绍1.1 Plik简介1.2 Plik特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Plik镜像五、部署Plik临时…...

JsonRPC协议详解(协议介绍、请求示例、响应示例)

JsonRPC协议详解 文章目录 JsonRPC协议详解什么是RPC?什么是JsonRPC?JsonRPC详解请求示例响应示例成功和失败响应示例参数的数据类型 结束语 什么是RPC? RPC(远程过程调用)是一种用于实现分布式系统中不同进程或不同计…...

系列六、Spring整合单元测试

一、概述 Spring中获取bean最常见的方式是通过ClassPathXmlApplicationContext 或者 AnnotationConfigApplicationContext的getBean()方式获取bean,那么在Spring中如何像在SpringBoot中直接一个类上添加个SpringBootTest注解,即可在类中注入自己想要测试…...

如何把 Oracle 19C RAC+DG加入到ORACLE EM 13C监控

平时见ORACLE 19c rac single dg的部署很多了,ORACLE em 13c 的安装也很多了,但如何把手工部署的oracle 19c rac dg 添加到em 13c 中去,让EM13C 来实现对RACDG的监控,主要是DG的EM13C的监控,还没有看到,大部分都是直接…...

Go 编程语言详解:用途、特性、与 Python 和 C++ 的比较

什么是Go? Go是一个跨平台、开源的编程语言Go可用于创建高性能应用程序Go是一种快速、静态类型、编译型语言,感觉上像动态类型、解释型语言Go由Robert Griesemer、Rob Pike和Ken Thompson于2007年在Google开发Go的语法类似于C Go用于什么? Web开发&…...

后缀数组

后缀数组感觉有点不好解释,简单记录一下板子。 后缀数组性质 lcp(i, j):指的是第i个后缀以及第j个后缀的最大公共前缀的长度 lcp(i, j) lcp(j, i) lcp(i, i) len(i) lcp(i, j) min(lcp(i, k), lcp(k, j)) 在o(nlogn)的时间复杂度内处理一个字符串&#xff…...

矩阵的初等变换

1.矩阵的初等变换的分类: 1.按类型分:初等行变换(动行),初等列变换(动列) 2.按方式分: 1.交换矩阵的两行或者两列 2.用一个不为0的数乘矩阵的某一行 3.用一个任意的数乘矩阵的某一行…...

Redis面试题:分片集群相关问题

目录 面试官:redis的分片集群有什么作用 面试官:Redis分片集群中数据是怎么存储和读取的? 面试官:redis的分片集群有什么作用 候选人:分片集群主要解决的是,海量数据存储的问题,集群中有多个m…...

leetcode设计循环队列(链表方式来实现)

上次我们那个设计循环队列的时候用的是数组,因为那个时候还是不太会链表,现在有了链表的思路,我们一起来看看解题步骤吧。 https://leetcode.cn/problems/design-circular-queue/description/ 设计循环队列 那我们其实最主要的就是我们这个…...

什么是高级语言、机器语言、汇编语言?什么是编译和解释?

1、高级语言 计算机程序是一种让计算机执行特定任务的方法。程序是由程序员用一种称为编程语言的特殊语言编写的。编程语言有很多种,例如 C、C、Java、Python 等。这些语言被称为高级语言,因为它们更接近人类的自然语言,而不是计算机能够直接…...

简要介绍Spring原生框架与Spring是轻量级框架的原因

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…...

成为AI产品经理——AI产品经理工作全流程

目录 一、业务背景 二、产品工作流程 1.需求定义 2.技术预研 3.数据准备 4.模型构建、宣讲和验收 5.工程开发及产品上线运营 一、业务背景 背景:排球日常训练活动、排球中考项目和排球体测项目耗费了大量人力成本和时间成本。 目标:开发一套用…...

git commit 撤销的三种方法

一般在提交代码的时候,顺序是这样的 git status // 查看修改文件状态(已添加至暂存区还是未添加至暂存区)git add . // 添加所有已修改文件 git add xxx/xxx // 添加目录为xxx/xxx的文件至暂存区git commit -m xx功能全部完成 // 提交暂存区…...

Linux系统编程 day06 进程间通信

进程间通信 1. 进程间通信的概念2. 匿名管道pipe3. 命名管道FIFO4. 内存映射区 1. 进程间通信的概念 在Linux的环境下,进程地址空间是相互独立的,每个进程有着各自不同的用户地址空间。一个进程不能访问另一个进程中的内容,要进行数据交换必…...

血的教训--redis被入侵之漏洞利用复现--总览

血的教训–redis被入侵之漏洞利用复现–总览 相信大家对于自己的服务器被入侵,还是比较憎恨的,我的就被攻击了一次,总结经验,自己也是整理了这一个系列,从最基础到最后面的自己总结被攻破的步骤,非常清晰的…...

C语言矩阵乘积(ZZULIOJ1127:矩阵乘积)

题目描述 计算两个矩阵A和B的乘积。 输入第一行三个正整数m、p和n&#xff0c;0<m,n,p<10&#xff0c;表示矩阵A是m行p列&#xff0c;矩阵B是p行n列&#xff1b;接下来的m行是矩阵A的内容&#xff0c;每行p个整数&#xff0c;用空格隔开&#xff1b;最后的p行是矩阵B的内…...

用windows自带的FTP服务器实现同一局域网建立ftp服务器实现文件共享的详细步骤

原理 Windows自带的FTP服务器是Internet Information Services&#xff08;IIS&#xff09;组件的一部分&#xff0c;可以用于同一局域网建立FTP服务器以实现文件共享。下面是使用Windows自带的FTP服务器实现文件共享的详细步骤&#xff1a; 安装IIS组件&#xff1a; 打开控制…...

SpringBoot——模板引擎及原理

优质博文&#xff1a;IT-BLOG-CN 一、模板引擎的思想 模板是为了将显示与数据分离&#xff0c;模板技术多种多样&#xff0c;但其本质都是将模板文件和数据通过模板引擎生成最终的HTML代码。 二、SpringBoot模板引擎 SpringBoot推荐的模板引擎是Thymeleaf语法简单&#xff0…...

java开发中各个环境的适用场景

java开发中各个环境的适用场景 一.开发环境 在系统开发的经典模型&#xff0c;一般会分成 2 类 5 种环境&#xff1a; 【线下】本地环境(local)、开发环境(dev)、测试环境(test) 【线上】预发布环境(stage)、生产环境(prod) 每个环境、每个项目使用独立的二级域名 线下、线…...

【Java程序员面试专栏 专业技能篇】Java SE核心面试指引(二):面向对象思想

关于Java SE部分的核心知识进行一网打尽,包括四部分:基础知识考察、面向对象思想、核心机制策略、Java新特性,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第二部分:面向对象思想,子节点表示追问或同级提问 面向对象基…...

保姆级避坑指南:在Ubuntu 20.04 + ROS Noetic下,用Livox Mid360雷达和PX4无人机做Gazebo仿真建图

保姆级避坑指南&#xff1a;Ubuntu 20.04 ROS Noetic下Livox Mid360雷达与PX4无人机Gazebo仿真建图全流程解析 当你在深夜的实验室里第三次面对Gazebo的黑屏和ROS的红色报错时&#xff0c;是否想过——为什么别人的仿真流程行云流水&#xff0c;而自己的每一步都像在拆炸弹&am…...

个人 DIY 传动套件开发计划

最近刚忙完电控部分相关的学习工作&#xff0c;终于可以推进自己的 DIY 项目了&#xff01;之前已经完成了多款减速器的 3D 打印原型验证&#xff0c;涵盖偏心活齿、凸轮活齿、摆线减速器等经典结构。接下来的核心计划&#xff0c;是在现有传动结构的基础上&#xff0c;完成完整…...

Rust crate 构建与依赖管理

Rust作为一门现代系统编程语言&#xff0c;凭借其出色的性能与安全性吸引了大量开发者。而Rust的模块化设计核心——crate&#xff08;代码库&#xff09;的构建与依赖管理&#xff0c;则是每个Rust开发者必须掌握的关键技能。无论是构建小型工具还是大型项目&#xff0c;高效的…...

变分推断(Variational Inference)在贝叶斯统计中的核心作用与应用

1. 变分推断&#xff1a;贝叶斯统计的"捷径"工具 第一次接触变分推断(Variational Inference)时&#xff0c;我正被一个图像分类项目困扰。当时需要计算神经网络权重的后验分布&#xff0c;但传统的MCMC采样方法跑一次就要8小时&#xff0c;完全不适合实际应用。直到…...

华为网络设备高效巡检命令全解析(运维必备)

1. 华为网络设备巡检命令的重要性 作为网络运维人员&#xff0c;每天最头疼的就是设备突然抽风&#xff0c;业务中断。记得去年双十一大促前夜&#xff0c;我们核心交换机突然丢包严重&#xff0c;要不是靠着几个关键巡检命令快速定位到是BGP邻居状态异常&#xff0c;估计第二天…...

Python使用SymSpell详解:打造极速拼写检查引擎

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;拼写检查是提升文本质量的关键环节。传统方法如PyEnchant依赖语言规则库&#xff0c;而基于深度学习的模型&#xff08;如BERT&#xff09;虽精度高但计算成本高昂。本文将聚焦SymSpell——一个基于对称删除算法的Py…...

SITS2026独家解密:LLM边缘部署的7层压缩栈(含实测吞吐提升217%的INT4量化方案)

第一章&#xff1a;SITS2026独家解密&#xff1a;LLM边缘部署的7层压缩栈&#xff08;含实测吞吐提升217%的INT4量化方案&#xff09; 2026奇点智能技术大会(https://ml-summit.org) SITS2026首次公开完整披露面向端侧LLM推理的七层协同压缩架构&#xff0c;该栈在树莓派5RP2…...

终极指南:如何用AI快速生成高质量多语言字幕

终极指南&#xff1a;如何用AI快速生成高质量多语言字幕 【免费下载链接】openlrc Transcribe and translate voice into LRC file using Whisper and LLMs (GPT, Claude, et,al). 使用whisper和LLM(GPT&#xff0c;Claude等)来转录、翻译你的音频为字幕文件。 项目地址: htt…...

【GESP】C++一级真题 luogu-B4495, [GESP202603 一级] 交朋友

2026年3月&#xff0c;GESP一级真题&#xff0c;考察基础语句和逻辑&#xff0c;难度★☆☆☆☆。 B4495 [GESP202603 一级] 交朋友 题目要求 题目题解详见https://www.coderli.com/gesp-1-luogu-b4495/ https://www.coderli.com/gesp-1-luogu-b4495/https://www.coderli.co…...

EldenRingSaveCopier终极教程:轻松实现艾尔登法环存档安全迁移

EldenRingSaveCopier终极教程&#xff1a;轻松实现艾尔登法环存档安全迁移 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 还在为《艾尔登法环》存档丢失而烦恼吗&#xff1f;这款开源工具EldenRingSaveCopie…...