Docker系列八自建图床

前言

其实早在最一开始的时候,就考虑过图片应该怎么办,真的是考虑了很久,也尝试过阿里云,七牛云的oss,总得来说就是花钱存图片让我有些不是滋味。

等到多平台发布文章变为刚需,就再次把目光放在了chevereto上面,想要自建图床来使用。但是再换服务器的时候,发现还要迁移数据库和图片数据。不仅如此,更重要的是,我慢慢生出了转换域名的想法,如果真的是用了自建图床,那么之前的所有链接都会无效。

现在的方案是用墨滴上传到平台的图片数据库里,因为类似微信公众号和CSDN这种大平台,再如何也比我的个人域名更坚挺吧。

安装Chevereto

综合对比的内容不是本文的主要核心,干脆就完全舍弃好了。

所使用的chevereto网上评价还是可以的,我也没有找到其他更多的开源图床程序,就使用这个了,效果如下。

创建数据库容器

存储的方式,是需要使用数据库来辅助存储内容,所以需要先构造一个的数据库。

如何使用docker安装部署mysql或者mariadb,已经在本系列里面写到了,大家可以从我的博客右上角去搜索。

在这里只是简单附上了运行容器、创建数据库的命令。

# 创建并且运行容器
docker run \
    --name mariadb \
    -p 4305:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d \
    --restart=always \
    --privileged=true \
    -v /home/keen/docker/myriadb-10.0/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
    -v /home/keen/docker/myriadb-10.0/data/:/var/lib/mysql \
    mariadb

# 创建数据库
create database keen_chevereto DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

这里有第一个重要参数,就是数据库的名称keen_chevereto在下面会要用到的。

拉取镜像

先去寻找,再决定拉取哪个版本,最后直接拉取了最新版本的。

本意是想要直接拉取官方提供的那个版本,但是在之后发现了linuxserver/chevereto还多适配了两个armarm64,虽然我现在是用不到,但是不代表我以后不会呀,于是就选择了这个。

docker search chevereto

docker pull linuxserver/chevereto

创建外部挂载目录

递归创建存储目录。

export Chevereto=chevereto
mkdir -p /home/keen/docker/$Chevereto/config
mkdir -p /home/keen/docker/$Chevereto/data

启动容器

其实两个端口可以只映射一个的,这里的第二个重要参数信息就是连接docker数据库的名称为db,也会在下面安装的时候用到。

docker run -d \
    --restart=always \
    --name=chevereto \
    --link mariadb:db \
    -e TZ=Asia/Shanghai \
    -p 5217:80 \
    -p 5218:443 \
    -v /home/keen/docker/chevereto/config:/config \
    -v /home/keen/docker/chevereto/data:/data \
    -v /etc/localtime:/etc/localtime:ro \
    linuxserver/chevereto

初始化账号

接下来进入图床的初始化界面,一般是用IP地址:端口的方法访问,比如我的就可以用39.96.12.167:5218,但是如果你会端口转发的话,也可以达成像我一样用链接登陆:https://www.images.clzly.xyz

两个重要信息就是这个时候使用的,按照提示,输入账号、密码、邮箱等信息,至此完成安装。

 

配置Chevereto容器

配置图片上传大小

图片上传2m实在是太小了,这个问题,可以使用命令重启容器。重启后就可以在两个地方配置基础变量,只不过$Chevereto/config/php/php-local.ini的优先级高于$Chevereto/config/php.ini罢了。

 docker restart chevereto

修改服务器的配置文件config/php/php-local.ini,文件内容如下。

; post传递数据大小
post_max_size = 20M

; 上传文件的大小
upload_max_filesize = 20M

; 一批次最多可以上传的个数
max_file_uploads = 100

配置路由

如果是界面上正常使用图床,一般是不需要修改这里的。但是如果你有用Api的方式上传图片的需求,那么我更推荐你配置一下路由。

因为没有配置路由的话,传上来的图片全是归为访客上传的,不会在既有的相册里面存在。

首先要将容器中的配置文件复制到宿主机上来。

# 从容器中复制出来配置文件
docker cp temp:/app/chevereto/app/routes/route.api.php /home/keen/docker/$Chevereto/config/route.api.php

将里面原始的内容,进行特别的修改,比如我的用户名是 keen,相册ID是2,修改内容如下。

# 旧内容
# $uploaded_id = CHV\Image::uploadToWebsite($source);

# 新内容
$uploaded_id = CHV\Image::uploadToWebsite($source, 'keen', array('album_id'=>2));

接下来你可以选择关闭当前容器,用如下命令重新启动容器;当然,你也可以选择修改容器的hostconfig.json 配置文件,然后重启容器,之前的系列已经讲过,不再赘述。

docker run -d \
    --restart=always \
    --name=chevereto \
    --link mariadb:db \
    -e TZ=Asia/Shanghai \
    -p 5217:80 \
    -p 5218:443 \
    -v /home/keen/docker/$Chevereto/config:/config \
    -v /home/keen/docker/$Chevereto/data:/data \
    -v /etc/localtime:/etc/localtime:ro \
    -v /home/keen/docker/$Chevereto/config/route.api.php:/app/chevereto/app/routes/route.api.php \
    linuxserver/chevereto

配置域名转发

因为以前就是使用的Nginx,所以完全可以使用转发的方式,将端口映射到子域名。nginx的配置如下。

server {
        listen       80;
        server_name  images.clzly.xyz www.images.clzly.xyz;
        rewrite ^(.*)$  https://www.images.clzly.xyz permanent; #用于将http页面重定向到https页面
}
server {
    listen 443 ssl;
    server_name  images.clzly.xyz www.images.clzly.xyz;
    ssl_certificate     /etc/nginx/conf.d/cert3/www.images.clzly.xyz.pem;
    ssl_certificate_key /etc/nginx/conf.d/cert3/www.images.clzly.xyz.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

      location / {
            proxy_pass  https://39.96.12.167:5218; # 转发规则
      }

      location ~ .* {
            proxy_pass  https://39.96.12.167:5218; # 转发规则
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

图床迁移

图片内容是必须的,数据库也是必须的,还有配置文件更是必须的!

在切换服务器的时候,注意要把config/settings.php文件进行备份,因为这些内容中配置了数据库的信息。

<?php
$settings = array (
  'db_host' => 'db',
  'db_name' => 'keen_chevereto',
  'db_user' => 'root',
  'db_pass' => '123456',
  'db_table_prefix' => 'chv_',
  'db_driver' => 'mysql',
  'db_pdo_attrs' => 
  array (
  ),
  'debug_level' => 1,
);

完成上面三个的备份,就可以关闭并且删除原先的容器。

export Chevereto=chevereto
docker stop $Chevereto && docker rm $Chevereto

接着在新的机器上面,拉取镜像,创建外部挂载目录,导入数据库,修改配置文件,接着运行容器即可!

总结

用这篇文章记录了折腾个人图床的全过程,从安装到配置都尽量全面了,一般来说网页上直接使用,可以当个图片管理器。

但是如何使用API上传图片的部分被我单独拎出来写了一篇文章的,因为那些内容就跟本系列关系并不大了。有兴趣的可以去看看。

感谢

  1. 感谢现在的好奇,为了能成为更好的自己。

  2. 用docker快速搭建chevereto图床

  3. 解决nginx部署后css、js、图片等样式不加载的问题

  4. 修改Chevereto的API上传相册和用户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值