51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【好玩儿的Docker项目】10分钟搭建一个功能更强大的图床——Lsky Pro

  1. 介绍 {#1-介绍}

Lsky Pro 是一个用于在线上传、管理图片的图床程序,中文名:兰空图床,你可以将它作为自己的云上相册,亦可以当作你的写作贴图库。
兰空图床始于 2017 年 10 月,最早的版本由 ThinkPHP 5 开发,后又经历了数个版本的迭代,在 2021 年末启动了新的重写计划并于 2022 年 3 月份发布全新的 2.0 版本。

1.1 特点 {#11-特点}

咕咕这边简单在网上也~~抄~~搜集了一些特点,供大家参考:

  • 支持本地等多种第三方云储存 AWS S3阿里云 OSS腾讯云 COS七牛云又拍云SFTPFTPWebDavMinio
  • 多种数据库驱动支持,MySQL 5.7+PostgreSQL 9.6+SQLite 3.8.8+SQL Server 2017+
  • 支持配置使用多种缓存驱动,MemcachedRedisDynamoDB、等其他关系型数据库,默认以文件的方式缓存
  • 多图上传、拖拽上传、粘贴上传、动态设置策略上传、复制、一键复制链接
  • 强大的图片管理功能,瀑布流展示,支持鼠标右键、单选多选、重命名等操作
  • 自由度极高的角色组配置,可以为每个组配置多个储存策略,同时储存策略可以配置多个角色组
  • 可针对角色组设置上传文件、文件夹路径命名规则、上传频率限制、图片审核等功能
  • 支持图片水印、文字水印、水印平铺、设置水印位置、X/y 轴偏移量设置、旋转角度等
  • 支持通过接口上传、管理图片、管理相册
  • 支持在线增量更新、跨版本更新
  • 图片广场

1.2 安装要求(我们用Docker安装!) {#12-安装要求我们用docker安装}

  • ~~PHP >= 8.0.2~~
  • ~~BCMath PHP 扩展~~
  • ~~Ctype PHP 扩展~~
  • ~~DOM PHP 拓展~~
  • ~~Fileinfo PHP 扩展~~
  • ~~JSON PHP 扩展~~
  • ~~Mbstring PHP 扩展~~
  • ~~OpenSSL PHP 扩展~~
  • ~~PDO PHP 扩展~~
  • ~~Tokenizer PHP 扩展~~
  • ~~XML PHP 扩展~~
  • ~~Imagick 拓展~~
  • ~~exec、shell_exec 函数~~
  • ~~readlink、symlink 函数~~
  • ~~putenv、getenv 函数~~

1.3 支持的数据库 {#13-支持的数据库}

  • Mysql 5.7+
  • PostgreSQL 9.6+
  • SQLite 3.8.8+
  • SQL Server 2017+

感觉有没有心动呢?

来动手搞一个玩玩吧~

  1. 项目展示 {#2-项目展示}

GitHub原项目地址(感谢作者的付出):https://github.com/lsky-org/lsky-pro (2.3k star)

官网地址:https://www.lsky.pro/

文档地址:https://docs.lsky.pro/

本期用的Docker镜像地址 (感谢@Allen Hua):https://hub.docker.com/r/dko0/lsky-pro

PicGo插件:lankong(再次感谢@Allen Huahttps://hellodk.cn/post/964

直接丢几个图片:

  1. 搭建环境 {#3-搭建环境}

  1. 搭建视频(~~还没拍~~ 待上传 = =) {#4-搭建视频还没拍-待上传--}

YouTube:https://youtu.be/ukOLHIMC2R4

哔哩哔哩【高清版本可以点击去吐槽到B站观看】:

  1. 搭建方式 {#5-搭建方式}

5.1 搭建 {#51-搭建}

服务器初始设置,参考

新买了一台服务器"必须"要做的6件小事

【Docker系列】不用宝塔面板,小白一样可以玩转VPS服务器!

注意:VPS的内存如果过小,建议设置一下SWAP,一般为内存的1-1.5倍即可,可以让运行更流畅!

设置SWAP可以用脚本:

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

image-20220528185512488

选择18,然后输入你想要扩容的数值即可。

image-20220528185604586

sudo -i # 切换到root用户

apt update -y  # 升级packages

`apt install wget curl sudo vim git  # Debian系统比较干净,安装常用的软件
`

创建一下安装的目录:

mkdir -p /root/data/docker_data/lsky-pro

cd /root/data/docker_data/lsky-pro

`nano docker-compose.yml
`

docker-compose.yml填入以下内容:

version: '3'
services:
    lsky-pro:
        container_name: lsky-pro
        image: dko0/lsky-pro
        restart: always
        volumes:
            - /root/data/docker_data/lsky-pro/lsky-pro-data:/var/www/html  #映射到本地
        ports:
            - 7791:80
        environment:
            - MYSQL_HOST=mysql
            - MYSQL_DATABASE=lsky-pro
            - MYSQL_USER=lsky-pro
            - MYSQL_PASSWORD=lsky-pro

    mysql:
        image: mysql:8.0
        container_name: lsky-pro-db
        restart: always
        environment:
          - MYSQL_DATABASE=lsky-pro
          - MYSQL_USER=lsky-pro
          - MYSQL_PASSWORD=lsky-pro
          - MYSQL_ROOT_PASSWORD=lsky-pro
        volumes:
          - /root/data/docker_data/lsky-pro/db:/var/lib/mysql




没问题的话,ctrl+x退出,按y保存,enter确认。

查看端口是否被占用,输入:

lsof -i:7791  #查看7791端口是否被占用,如果被占用,重新自定义一个端口

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装lsof

如果端口没有被占用,可以运行:

docker-compose up -d 

访问:http:服务ip:7791 即可。

注意:

1、不知道服务器IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的IP。

2、遇到访问不了的情况,请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。

5.2 更新 {#52-更新}

0d5f4fa5aff604ea02967fc69a209500.png

cp -r /root/data/docker_data/lsky-pro/lsky-pro-data /root/data/docker_data/lsky-pro/lsky-pro-data.archive  # 万事先备份,以防万一

cp -r /root/data/docker_data/lsky-pro/db /root/data/docker_data/lsky-pro/db.archive #数据库也备份一下


cd /root/data/docker_data/lsky-pro  # 进入docker-compose所在的文件夹


docker-compose pull    # 拉取最新的镜像

`docker-compose up -d   # 重新更新当前镜像
`

利用Docker-compose搭建的应用,更新非常容易~

5.3 卸载 {#53-卸载}

cd /root/data/docker_data/lsky-pro  # 进入docker-compose所在的文件夹

docker-compose down    # 停止容器,此时不会删除映射到本地的数据

`rm -rf /root/data/docker_data//root/data/docker_data/lsky-pro  # 完全删除映射到本地的数据
`

  1. 反向代理 {#6-反向代理}

6.1 利用Nginx Proxy Manager {#61-利用nginx-proxy-manager}

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上域名购买、域名解析 视频教程

之后,登陆Nginx Proxy Manager(不会的看这个:安装Nginx Proxy Manager相关教程))

注意:

Nginx Proxy Manager(以下简称NPM)会用到80443端口,所以本机不能占用(比如原来就有Nginx)

直接丢几张图: image-20220528102248072 注意填写对应的域名端口,按文章来的话,应该是7791 image-20220403104353185 image-20220528102321203

然后就可以用域名来安装访问了。

  1. 使用教程 {#7-使用教程}

见咕咕鸽的视频

7.1 安装 {#71-安装}

安装界面: {#安装界面}

3b67780cb2230ee681c3c4437bfd1fc7.png

注意,数据库连接地址,填docker-compose文件里的容器名称lsky-pro-db,连接端口不用填。 1c3b8421b57e87bceeffb692f016d8a3.png

成功安装: {#成功安装}

2e7edcc6fc9ffd151af3e6cf37542681.png 0e20398390300cd4bbb35f1880e39606.png

管理员登陆: {#管理员登陆}

522d1160c8404752b712cf0bf3f3ec45.png

扔几张后台的图片: 72e367082f40df1fb8079b0a9dce8866.png fdd16a41a52d0a873d193912349f54eb.png b8b7037c621cbbd66ba426dc84a8a3a0.png 4c4dad2c7ef0cfda7f53afed65786cb5.png

图片管理(搜索): {#图片管理搜索}

d216aed64612227d6f7f3b6067e24743.png

开启/关闭注册: {#开启关闭注册}

7d49581858ddbb6af7bbde66e34825be.png

多种储存策略: {#多种储存策略}

91396074dfcd211965ccd3b534d535fe.png

修改站点名称: {#修改站点名称}

f297538b05651cefff7417392dd16dbe.png

API接口: {#api接口}

4c6f280b9c39426b8b9cbe40e297d4ee.png

上传测试: {#上传测试}

1947dd590e26252c555e03c850a70872.png

7.2 配置PicGO与Typora(来自@Nesxc) {#72-配置picgo与typora来自nesxc}

我们用图床,写博客,当然是为了方便。

咕咕习惯使用Typora来写东西,我们想要做到粘贴图片到Typora就能实现自动上传到图床,兰空图床有可以用的API,我们搭配PicGO就可以实现这个效果。

获取token {#获取token}

2.0的兰空图床不在直接显示token了,所以我们要自己获取一下token。

image-20220528184251718

按照后台给的教程,我们直接去post一下,google或者百度一下就能找到很多支持在线post的网站。

比如我们使用https://www.sojson.com/httpRequest/

a3a58d9998b66ea64e7bf44730ceab18.png

首先,post的地址是 https://你的网站/api/v1/tokens (例如,咕咕这个就是https://typecho.guguge.ga/api/v1/tokens)然后参数就是emailpassword两个常规参数,直接post。

685dc5ba1aba30df56a30274a4ed57f9.png

然后他会返回一个名称为token的数据(咕咕这里是1|C75sSXxxdkPG63rgMor43335qVd1H9tRQozkonttZeNw),复制他保存,这就是后面会用到的token

PicGo设置 {#picgo设置}

在PicGo的插件页面,直接搜索lankong安装。

fd181f118c2a731f71d1789cf3835be5.png

然后在图床设置中,设置兰空图床的参数。

其中,版本设置为V2

Server为你的兰空图床站点(咕咕这里是https://typecho.guguge.ga),注意不要/结尾。

Auth tokenBearer + token。 举例为: Bearer 1|C75sSXxxdkPG63rgMor43335qVd1H9tRQozkonttZeNw。注意Bearertoken中间有空格。

然后其他的参数可以根据插件readme来进行设置,一般可以不用动。

完成 {#完成}

至此,我们的PicGo使用兰空2.0的方法就完成了。

ddb29acbd9860d5c82be18d14432bc4c.png

Typora测试 {#typora测试}

简单复制一张图片,直接粘贴,测试一下,发现能够正常上传并生成图床链接。 36e52ee94c7f519455bef4548a5c45f5.png

图床后台也成功显示了。 023e5d07ff41507a0a28a0509584f15f.png 对于上述问题,有解决的小伙伴欢迎在评论区留言交流!

  1. 结尾 {#8-结尾}

祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。

同时,有能力给项目做贡献的同学,也欢迎积极加入到项目中来,贡献自己的一份力量!

  1. 参考资料 {#9-参考资料}

https://github.com/lsky-org/lsky-pro

https://www.lsky.pro/

https://docs.lsky.pro/

https://www.sojson.com/httpRequest/

本期用的Docker镜像地址 (感谢@Allen Hua):https://hub.docker.com/r/dko0/lsky-pro

PicGo插件:lankong(再次感谢@Allen Huahttps://hellodk.cn/post/964

https://www.nesxc.com/1068/

https://blog.laoda.de/archives/docker-compose-install-lskypro

赞(0)
未经允许不得转载:工具盒子 » 【好玩儿的Docker项目】10分钟搭建一个功能更强大的图床——Lsky Pro