使用docker部署easyimage图床

使用docker部署easyimage图床

前言

最近希望把学习到的知识通过文档方式记录下来,了解下来后决定使用Typora&&Picgo&&EasyImage实现markdown文档的编写,由于手上没有云服务器,所以打算通过本地虚拟机部署EasyImage图床后将图床图片上传到github后通过脚本自动修改文档图片链接指向github图片链接的方式绕过服务器,缺点是github图床需要访问人员也能访问github才行,不然图片也加载不出来,优点是服务器本地及线上都会有一份图片文件,能防止线上图片文件丢失后无法恢复的情况发生。就使用结果而言没有线上服务器的话使用体验也还可以,但直接使用github图床应该会更方便,本篇文章留作记录。

easyimage图床部署

  1. 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 # 验证是否安装成功
      
  2. 部署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配置

    1. 安装Picgo

      参考:https://blog.csdn.net/weixin_42837669/article/details/126279327安装部分

    2. 链接本地图床

      • 安装插件 web-uploader

      • 图床设置

  3. 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的后缀

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SAPIC个人图床系统是一个基于Vue框架和Node.js的图片管理系统,使用docker部署该系统可以方便快捷地搭建自己的图床服务。 首先,需要安装DockerDocker Compose,可以在官网下载安装包进行安装。搭建之前,需要在本地环境创建一个新的目录用来存放SAPIC个人图床系统的代码和配置文件。 接下来,可以通过以下步骤搭建SAPIC个人图床系统: 1.下载SAPIC个人图床系统的代码,可以在GitHub上进行下载。 2.将下载的代码复制到刚才创建的目录中,并在该目录中创建一个名为docker-compose.yml的文件,用于定义容器的配置。 3.在docker-compose.yml文件中,添加以下代码: version: '3.8' # 定义Docker Compose的版本 services: web: image: sapic/web # 使用SAPIC个人图床系统镜像 ports: - "80:80" # 暴露80端口,可以通过浏览器访问 environment: - GITHUB_CLIENT_ID=YOUR_GITHUB_CLIENT_ID # 添加GitHub OAuth认证所需的环境变量 - GITHUB_CLIENT_SECRET=YOUR_GITHUB_CLIENT_SECRET - SERVER_HOST=YOUR_HOST_NAME # 为服务设定你的域名或公网ip地址 - JWT_SECRET=YOUR_SECRET_KEY # Json Web Token加密密钥(YOUR_SECRET_KEY可以替换成自己定义的密钥) volumes: - ./data:/app/data # 挂载数据卷,用于持久化数据 4.在上面的代码中,需要将YOUR_GITHUB_CLIENT_ID和YOUR_GITHUB_CLIENT_SECRET替换成自己在GitHub申请的OAuth认证参数,YOUR_HOST_NAME替换成自己的域名或公网ip地址,YOUR_SECRET_KEY替换成自己定义的Json Web Token加密密钥。 5.运行以下命令,执行容器的初始化和启动: docker-compose up -d 6.默认情况下,SAPIC个人图床系统所使用的文件存储路径是挂载到data目录下的。可以通过修改docker-compose.yml文件中的volumes部分,将文件存储路径指定到其他路径。 7.访问服务地址,打开SAPIC个人图床系统的主页,使用GitHub账号进行登录即可开始上传和管理图片。 综上所述,使用Docker部署SAPIC个人图床系统非常简单,只需要将代码复制到本地环境中,编写docker-compose.yml文件,执行docker-compose up -d 命令即可。同时在部署完成后,也可以通过修改容器配置文件的方式,对服务进行进一步优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值