借助gitee仓库构建私有图床

借助gitee仓库构建私有图床

架构和准备

  1. 创建gitee服务端仓库
  2. 创建gitee图床仓库
  3. 日常图片存储gitee仓库,通过git提交,保障本地电脑和云上备份双份
  4. 创建spring-boot服务端应用,实现预览图片路径为gitee图床
  5. 创建spring-boot客户端应用,实现远程服务端同步git pull命令
  6. 部署服务通过nginx域名代理
  7. 服务端部署

具体实现细节

仓库和源码地址

gitee 图片仓库[https://gitee.com/kcnf_open/wiki\]

gitee 服务端仓库[https://gitee.com/kcnf_open/kcnf-wiki\]

服务端
复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
yaml配置
复制代码
#app
server:
  port: 8086
  servlet:
    context-path: /
#spring
spring:
  main:
    allow-bean-definition-overriding: true
  devtools:
    restart:
      enabled: false
  profiles:
    active: dev
  web:
    resources:
      static-locations: file:${IMAGE_BASE_PATH:/data/wiki}/, classpath:/static/
启动类
复制代码
package com.jysemel.kcnf;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
 * @author jysemel
 */
@Slf4j
@EnableScheduling
@SpringBootApplication
public class WikiApplication implements CommandLineRunner {

	@Autowired
	private ApplicationContext context;

	public static void main(String[] args) {
		log.info("砍材农夫	开始启动........................................");
		SpringApplication.run(WikiApplication.class, args);
		log.info("砍材农夫	启动成功........................................");
	}


	@Override
	public void run(String... args) throws Exception {
		// 更简单的方法:直接输出配置值
		String path = context.getEnvironment().getProperty("IMAGE_BASE_PATH");
		log.info(">>> IMAGE_BASE_PATH {}", path);
		log.info(">>> static-locations {}" , context.getEnvironment().getProperty("spring.web.resources.static-locations"));
	}

}
同步git 云图
复制代码
package com.jysemel.kcnf.controller;

import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

@Slf4j
@RestController
public class GitController {

    @Autowired
    private ApplicationContext context;


    @SneakyThrows
    @GetMapping("/admin/pull")
    public String pull() throws IOException {
        String path = context.getEnvironment().getProperty("IMAGE_BASE_PATH");
        log.info(">>> IMAGE_BASE_PATH {}", path);
        Process process = Runtime.getRuntime().exec("git -C "+ path +" pull");
        int code = process.waitFor();
        return code == 0 ? "success" : "failed";
    }
}

演示

相关推荐
tsyjjOvO2 天前
【Git 从入门到实战】(IDEA+Gitee 版)
git·gitee·idea
你知道“铁甲小宝”吗丶2 天前
git推送到多平台(gitee/github)
git·gitee·github
StackNoOverflow2 天前
IDEA + Git + Gitee 全流程实战:从安装、提交到解决冲突
git·gitee·intellij-idea
lpfasd1233 天前
Git/Gitee/GitHub 3 个安全凭证详解
git·gitee·github
搞程序的心海3 天前
使用 VS Code 将项目代码上传到 Gitee 的完整指南
gitee
Gust of wind3 天前
idea结合git和Gitee的初步使用
git·gitee·intellij-idea
运维全栈笔记4 天前
零基础掌握Jenkins CI/CD:Java项目自动构建与部署全流程指南
git·servlet·ci/cd·gitee·自动化·jenkins·devops
摇滚侠5 天前
Obsidian 同步项目到 Gitee
gitee
一个程序猿老马6 天前
012、远程协作:连接GitHub/Gitee与git remote
git·gitee·github