使用docker部署easyimage图床
前言
最近希望把学习到的知识通过文档方式记录下来,了解下来后决定使用Typora&&Picgo&&EasyImage实现markdown文档的编写,由于手上没有云服务器,所以打算通过本地虚拟机部署EasyImage图床后将图床图片上传到github后通过脚本自动修改文档图片链接指向github图片链接的方式绕过服务器,缺点是github图床需要访问人员也能访问github才行,不然图片也加载不出来,优点是服务器本地及线上都会有一份图片文件,能防止线上图片文件丢失后无法恢复的情况发生。就使用结果而言没有线上服务器的话使用体验也还可以,但直接使用github图床应该会更方便,本篇文章留作记录。
easyimage图床部署
-
vmware虚拟机安装操作系统
-
系统安装不做过多说明,请参考:https://blog.csdn.net/GRT609/article/details/123931322,如重启后一直卡在如下页面,关闭此虚拟机后重启即可
-
设置系统静态IP地址,请参考:https://blog.csdn.net/hs_lxy/article/details/121645535,如设置完后DNS无法正常工作,请参考:https://blog.csdn.net/cheng1126su/article/details/118357629,设置完后请使用ping指令验证主机与虚拟机,虚拟机与外网是否能够正常ping通!
-
安装docker,请执行如下命令
sudo su -l # 使用管理员账号操作 apt-get update apt-get install wget curl vim git docker-compose docker.io -y docker version # 验证是否安装成功
-
-
部署easyimage图床
-
拉取easyimage的docker镜像,请自行注册https://hub.docker.com/镜像仓库的账号,easyimage镜像为:https://hub.docker.com/r/ddsderek/easyimage
sudo su -l mkdir -p /etc/docker # 没有此文件夹就创建,有则跳过此步骤 vim /etc/docker/daemon.json # 在daemon.json粘贴下面内容,使用国内阿里云镜像 { "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"] } docker login # 登录dockerhub镜像仓库 docker pull ddsderek/easyimage
-
创建docker编排启动文件
# 创建安装目录 mkdir -p /root/data/docker_data/easyimage cd /root/data/docker_data/easyimage vim docker-compose.yml # 输入如下内容 version: '2.0' services: easyimage: image: ddsderek/easyimage:latest container_name: easyimage ports: - '8080:80' environment: - TZ=Asia/Shanghai - PUID=1000 - PGID=1000 volumes: - '/root/data/docker_data/easyimage/config:/app/web/config' - '/root/data/docker_data/easyimage/i:/app/web/i' restart: unless-stopped # 修改配置文件使用固定IP地址 vim /root/data/docker_data/easyimage/config/config.php
-
修改easyimage图床服务配置文件
vim /root/data/docker_data/easyimage/config/config.php
修改文件中下列地址为自己的IP地址
-
启动图床服务
cd /root/data/docker_data/easyimage docker-compose up -d # 如需关闭,请使用 docker-compose down命令
-
网页访问验证服务是否启动成功
浏览器中访问http://192.168.237.168:8080(请自行修改为自己的IP地址),出现如下界面
-
图片上传配置
Picgo及Typora配置
-
安装Picgo
参考:https://blog.csdn.net/weixin_42837669/article/details/126279327安装部分
-
链接本地图床
-
安装插件 web-uploader
-
图床设置
-
-
-
Typora配置
-
进入偏好设置
-
设置图像自动上传
-
脚本自动转换本地图床链接为网络链接
此时我们已经可以正常编写文档,但是由于图床是部署在我们本地的服务器上的,所以其他人并不能访问到我们的图片,因此,需要把文档中图片的链接转换为网络图片的链接
-
新建文件夹初始化为git仓库并推送
mkdir /root/data/docker_data/easyimage/image_github cd /root/data/docker_data/easyimage/image_github git init find /root/data/docker_data/easyimage/i -regex ".*\gif\|.*\jpeg\|.*\png\|.*\tif\|.*\bmp\|.*\webp\|.*\jpg\|.*\tga\|.*\svg\|.*\ico\|" | xargs -i cp {} ./ git add . -A git commit git push xxx # 可以编写成shell脚本文件自动化此操作
-
编写python脚本将文档中的本地图床链接修改为网络链接
''' Author: kouyou Date: 2022-10-10 21:43:06 LastEditTime: 2022-10-10 23:34:15 Description: ''' import re import getopt import sys path = "" writed_path = "" options, args = getopt.getopt(sys.argv[1:], "f:", ["file="]) for name,value in options: if name in ("-f", "--file"): path = value writed_path, number = re.subn(r'(.*)\.md', '\\1-github.md', value) if path == "": print("请指定文件路径") sys.exit(0) file = open(path, "r", encoding="UTF-8") writed_file = open(writed_path, "w", encoding="UTF-8") for line in file.readlines(): if "192.168.237.168:8080/i/" in line: # result, number = re.subn(r'(http://192.168.237.168:8080/i/\d{4}/\d{2}/\d{2}/)(.*[\.gif|\.jpeg|\.png|\.tif|\.bmp|\.tif|\.svg|\.webp|\.jpg|\.tga|\.svg|\.ico])\)', 'https://github.com/kouyou-momiji/easyimage-image/blob/master/\\2?raw=true)', line) # line = result # 修改为<img src="xxx">模式适配csdn外链无法显示问题 result, number = re.subn(r'(\!\[.*\]\()(http://192.168.237.168:8080/i/\d{4}/\d{2}/\d{2}/)(.*[\.gif|\.jpeg|\.png|\.tif|\.bmp|\.tif|\.svg|\.webp|\.jpg|\.tga|\.svg|\.ico])\)', '<img src="https://github.com/kouyou-momiji/easyimage-image/blob/master/\\3?raw=true" />', line) line = result writed_file.write(line) print("===end===")
-
运行脚本得到转换后的文件
python.exe .\easyimage2github.py --file="../使用docker部署easyimage图床.md
转换后的文件在原文件同级目录,文件名添加了-github的后缀