当前位置:首页 > 群晖专栏 > 运维部署 > 正文内容

docker compose 部署迁移 Chevereto 图床程序教程

admin5年前 (2020-02-20)运维部署137

前言

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



镜像

官方镜像支持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端口即可完成迁移部署.


结语

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

本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面

扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=204

标签: 运维部署
分享给朋友:

相关文章

OLAINDEX另一个OneDrive目录索引应用部署教程

OLAINDEX另一个OneDrive目录索引应用部署教程

前言由于OneIndex非常受欢迎,一些优秀的开发者受OneIndex启发,开发出各种OneDrive目录索引应用,例如OLAINDEX,PyOne,CuteOne等等.其功能和主题非常丰富,本文将介绍使用OLAINDEX来部署OneDri...

CentOS使用OneIndex部署OneDrive免费网盘教程

CentOS使用OneIndex部署OneDrive免费网盘教程

前言本文将详解如何在CentOS上使用OneIndex程序部署OneDrive免费网盘OneIndex是一款不占服务器空间,不走服务器流量,直接列出OneDrive目录,文件在线查看和直接下载的Web源码OneIndex项目地址部署流程一、...

新手入门 Github Webhooks 完美自动化部署教程

新手入门 Github Webhooks 完美自动化部署教程

前言之前使用GitHub Actions可以在提交代码后自动上传到腾讯云COS存储桶,实现静态网站完美自动化部署.那么非静态的网站或者项目需要自动化部署到VPS服务器上就可以使用GitHub Webhooks来实现.作为纯属新手来说,网上查...

Linux 服务器 docker 部署 AWTRIX 2.0 Server

Linux 服务器 docker 部署 AWTRIX 2.0 Server

前言之前帮一位朋友部署油管粉丝数显示牌的服务端.由于特殊需求,需要把AWTRIX的服务器端部署到 VPS 服务器上.本文将介绍如何在 VPS 服务器上使用 docker 部署 AWTRIX 2.0 Server 服务器端.同时推荐好友的 Y...

甲骨文云 Oracle Cloud 免费 ARM 实例关于引导卷扩容 yum docker BBR 等相关解决方案

甲骨文云 Oracle Cloud 免费 ARM 实例关于引导卷扩容 yum docker BBR 等相关解决方案

前言最近甲骨文云 Oracle Cloud 良心的推出了永久免费的 ARM 实例,竟然给出了最多 4 核 24G 内存 4G 带宽的配置.羊毛党怎么会轻易错过.在折腾了一天后,整理和总结了一些大家常用会需要了解的信息和解决方案.由于甲骨文的...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。