前言

Chevereto 是目前最流行的图床之一.其颜值高,功能多,扩展性强,安装方便并提供了免费和付费版本满足了各种需求.由于近期沉迷于 docker 环境,于是决定尝试使用 docker compose 安装部署,并迁移现有的图片和数据库.

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

镜像

官方镜像支持dockerdocker compose两种部署方法,博主推荐使用docker compose的方案,通过挂载图片及数据库目录,可以实现非常快速的备份和迁移.

docker-compose.yml 参考

version: '3'

services:
  db:
    image: mariadb
    volumes:
      - ./database:/var/lib/mysql:rw
    restart: always
    networks:
      - private
    environment:
      MYSQL_ROOT_PASSWORD: xxxxx
      MYSQL_DATABASE: xxxxx
      MYSQL_USER: xxxxx
      MYSQL_PASSWORD: xxxxx

  chevereto:
    depends_on:
      - db
    image: nmtan/chevereto
    restart: always
    networks:
      - private
    environment:
      CHEVERETO_DB_HOST: db
      CHEVERETO_DB_USERNAME: xxxxxx
      CHEVERETO_DB_PASSWORD: xxxxx
      CHEVERETO_DB_NAME: xxxxx
      CHEVERETO_DB_PREFIX: chv_
    volumes:
      - ./images:/var/www/html/images:rw
      - ./php.ini:/usr/local/etc/php/php.ini:ro
    ports:
      - 8080:80

networks:
  private:

配置

创建 chevereto 文件夹

为图床程序创建一个文件夹以存放配置文件,图片文件夹,数据库文件夹.以便方便备份和迁移.博主推荐直接在root目录下创建chevereto文件夹.同时在chevereto文件夹内创建docker-compose.yml文件和php.ini文件.

配置 php.ini 文件

配置 docker 服务可支持的最大上传限制.以下默认配置为100M上传限制,请自行配置.

memory_limit = 256M;
upload_max_filesize = 100M;
post_max_size = 100M;

配置 docker-compose.yml 文件

配置数据库

依照上文docker-compose.yml参考,修改对应的数据库信息.

MYSQL_ROOT_PASSWORD: xxxxx
# 自行创建数据库root密码
MYSQL_DATABASE: xxxxx
# 创建图床数据库名
MYSQL_USER: xxxxx
# 创建数据库用户名
MYSQL_PASSWORD: xxxxx
# 创建数据库用户密码

CHEVERETO_DB_USERNAME: xxxxxx
# 与MYSQL的数据库用户名保持一致
CHEVERETO_DB_PASSWORD: xxxxx
# 与MYSQL的数据库用户密码保持一致
CHEVERETO_DB_NAME: xxxxx
# 与MYSQL的数据库名保持一致

配置挂载路径

上文docker-compose.yml样本参考中,博主已经配置好数据库文件夹database图片文件夹images的路径为./当前目录,即所有的配置和数据文件都存放在chevereto目录中.以下为配置解说:

- ./database:/var/lib/mysql:rw
# 挂载数据库到当前目录下的database
- ./images:/var/www/html/images:rw
# 挂载图片文件夹到当前目录下的images
- ./php.ini:/usr/local/etc/php/php.ini:ro
# 挂载php.ini到容器内以配置上传文件大小限制

部署

运行 docker-compose

完成以上docker-compose.ymlphp.ini文件的配置,运行以下命令即可启动服务.

# 启动命令
docker-compose up -d
# 容器正常运行中如需修改配置docker-compose.yml,执行以下停止命令,修改完毕后再次执行以上启动命令.
docker-compose down

docker容器启动后,chevereto文件夹内会自动生成挂载的两个目录.分别为数据库的database和图片文件夹images.为使图床程序能够正常上传和删除图片,还需要配置images文件夹权限.

chmod -R 777 images

配置域名及反向代理

配置域名,证书,301跳转HTTPS及反向代理至8080端口即可完成部署.

nginx示例

upstream dockername { 
    server 127.0.0.1:8080; # 端口改为docker容器提供的端口
}

server {
    listen 80;
    server_name  www.yourdomain.com;
    return 301 https://www.yourdomain.com$request_uri;
}

server {
    listen 443 ssl;
    server_name  www.yourdomain.com;
    gzip on;    

    ssl_certificate /usr/local/nginx/conf/ssl/www.yourdomain.com.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl/www.yourdomain.com.key;

    # access_log /var/log/nginx/dockername_access.log combined;
    # error_log  /var/log/nginx/dockername_error.log;

    location / {
        proxy_redirect off;
        proxy_pass http://dockername;

        proxy_set_header  Host                $http_host;
        proxy_set_header  X-Real-IP           $remote_addr;
        proxy_set_header  X-Forwarded-Ssl     on;
        proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto   $scheme;
        proxy_set_header  X-Frame-Options     SAMEORIGIN;

        client_max_body_size        100m;
        client_body_buffer_size     128k;

        proxy_buffer_size           4k;
        proxy_buffers               4 32k;
        proxy_busy_buffers_size     64k;
        proxy_temp_file_write_size  64k;
    }
}

迁移

场景一 : docker 环境之间迁移

首次部署是按照上文流程全新安装,后期如需迁移服务器,只需备份root内的chevereto文件夹至新服务器,运行docker-compose up -d,并配置域名及反向代理即可完成迁移.方便快捷,这也是博主推荐和分享本文的初衷.

场景二 : 常规LNMP部署迁移至 docker compose 部署

由于博主首次安装 chevereto 是常规 LNMP 环境安装,需备份数据库和图片文件,并迁移至 docker 部署环境,详细流程请参阅下文:

备份数据库

登陆原服务器使用mysqldump命令备份数据库.请确保你知道当初安装图床时所配置的数据库名,数据库用户名,数据库用户密码.导出为database.sql后拷贝至新服务器.

mysqldump -u user -p database > database.sql
# mysqldump -u 数据库用户名 -p 数据库名 > xxxx.sql

配置 docker-compose.yml 并运行

首先按照上文全新安装的流程配置完毕,其中docker-compose.yml文件内的数据库名,数据库用户名,数据库用户密码与原有图床程序安装时的数据库信息一致.然后运行 docker-compose.

docker-compose up -d

拷贝数据库文件至容器内

将备份出来的数据库文件database.sql并拷贝至mariadb容器内根目录.

docker cp database.sql mariadb:/

进入容器恢复数据库

执行命令进入mariadb容器的根目录

docker exec -it mariadb /bin/bash

使用mysqldump命令恢复数据库,其中user为你的数据库用户名,database为你的数据库名,执行后会提示输入数据库用户密码.

mysqldump -u user -p database > database.sql

迁移原图床图片

迁移原图床程序的images文件夹内所有文件夹及文件至docker-compose.yml所在目录images文件夹内.迁移完成后执行以下命令配置权限.

chmod -R 777 images

配置域名及反向代理

依照上文教程为新服务器配置域名,证书,301跳转HTTPS及反向代理至8080端口即可完成迁移部署.


结语

本站还介绍过其他图床的安装教程,详情请参考以下链接:

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

本文链接 https://www.ioiox.com/archives/80.html

如果喜欢我的文章,觉得对你有帮助,请随意赞赏!