最近着手搭建一个自用的图床,之前以有博客,图片一般存在博客的某个文件夹下,但是每次写博客的时候都要先将图片上传到服务器然后配图不能本地显示略嫌麻烦,因此准备在自己网站上搭建图床,使用docker,结合开源项目Lychee
补充发现:Chevereto 图床更好用,并且可以结合picGo自动上传,因此建议转为Chevereto 演示地址:https://demo.chevereto.com/
以下操作基于:Ubuntu 18.04
安装docker:
sudo apt-get update # 更新apt源
# 安装apt依赖包,用于通过https来获取仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 添加Docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 设置稳定版仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 安装Docker-ce
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 测试运行
sudo docker run hello-world
# 添加当前用户到docker用户组
# 列出自己的用户组,确认自己在不在 docker 组中
groups
# 没有则新增docker组
sudo groupadd docker
# 把当前用户加入到docker组中
sudo gpasswd -a ${USER} docker
# 重启docker服务
sudo service docker restart
docker-compose简介
compose是用于定义和运行多容器Docker应用程序的工具,通过Compose,可以使用YAML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以通过YAML文件配置中创建并启动所有服务。
安装docker-Compose
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
创建软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
docker-compose --version # cker-compose version 1.24.1, build 4667896b
部署Chevereto(推荐)
拉取镜像
docker pull mariadb:latest
docker pull nmtan/chevereto:latest
使用docker-compose来启动服务
mkdir cheverto/
cd cheverto
touch docker-compose.yaml
文件内容如下:
version: '3'
services:
db:
image: mariadb
volumes:
- database:/var/lib/mysql:rw
restart: always
networks:
- private
environment:
MYSQL_ROOT_PASSWORD: chevereto_root
MYSQL_DATABASE: chevereto
MYSQL_USER: chevereto
MYSQL_PASSWORD: chevereto
chevereto:
depends_on:
- db
image: nmtan/chevereto
restart: always
networks:
- private
environment:
CHEVERETO_DB_HOST: db
CHEVERETO_DB_USERNAME: chevereto
CHEVERETO_DB_PASSWORD: chevereto
CHEVERETO_DB_NAME: chevereto
CHEVERETO_DB_PREFIX: chv_
volumes:
- chevereto_images:/var/www/html/images:rw
ports:
- 8888:80
networks:
private:
volumes:
database:
chevereto_images:
运行
nohup docker-compose up &> run.log &
disown
使用picGo自动上传图片到图床
- 在PicGo插件中安装第三方API web-uploader / chevereto
- 在自定义插件区设置自己的图床参数
API 地址: http://your-site/api/1/upload POST 参数名: source JSON 路径: image.url 自定义 Body: {"key":"API Key","user":"your name","album":"album_id"}
- 修改Chevereto接受来自客户端的用户名和相册ID参数,避免上传至访客相册
±对应新增删除代码docker container ls #显示容器的container id docker container exec -it [container-id] /bin/bash # 进入容器 cd /app/routes/route.api.php # 将网站根目录下/app/routes/route.api.php复制到同目录下的/overrides文件夹 cp route.api.php overrides cd overrides vim route.api.php
$version = $handler->request[0]; $action = $handler->request[1]; + $user = $_REQUEST['user']; // 新增 + $album = $_REQUEST['album']; //新增 // CHV\Image::uploadToWebsite($source, 'username', [params]) to inject API uploads to a given username - $uploaded_id = CHV\Image::uploadToWebsite($source); + $uploaded_id = CHV\Image::uploadToWebsite($source, $user, array('album_id'=>$album));
部署Lychee
启动镜像,是端口映射,5120->80,访问5120端口映射到docker容器的80端口
docker image pull kdelfour/lychee-docker
docker image ls
docker run -it -d -p 5120:80 kdelfour/lychee-docker
docker container ls #查看正在运行的容器
搭建成功
访问http://ip:5120,新建用户密码,即可上传成功
图片存于服务器的具体地址
docker container ls #显示容器的container id
docker container exec -it [container-id] /bin/bash # 进入容器
ls
cd updates # 此目录的big目录下即为图片存放位置
卸载方式
docker container stop [container-id] # 停止运行容器
docker container rm [container-id] # 删除容器
docker image rmi [image-id] # 删除镜像
参考文章
1.在Ubuntu 18.04安装Docker
2.Docker容器使用
3.教你如何搭建自己的图床
4.docker-compose简介
5.docker搭建图床 chevereto 非常方便
6.Typora + PicGo 自动上传图片到 Chevereto 图床
感谢以上参考文章!
I'm so cute. Please give me money.
- 本文链接:https://wentianhao.github.io/2021/07/05/%E5%9B%BE%E5%BA%8A/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
若没有本文 Issue,您可以使用 Comment 模版新建。