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

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

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

前言

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

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

相关文章

服务器安装ServerStatus监控探针教程

服务器安装ServerStatus监控探针教程

前言本文将介绍在服务器上安装ServerStatus来监控多台服务器的运行状态的教程.ServerStatus-Toyo版是一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针~,该云监控(云探针)ServerStatus-Toyo项...

LNMP环境中使用Docker安装配置GitLab教程

LNMP环境中使用Docker安装配置GitLab教程

前言本文将介绍在CentOS已部署LNMP环境下,使用Docker安装GitLab,并配置SSL证书HTTPS访问.前提环境Linux服务器一台,本文以CentOS7为例.LNMP环境,很多需要安装GitLab的服务器都已经安装过LNMP环...

CentOS 7 安装Docker教程

CentOS 7 安装Docker教程

前言Docker安装官方分为以下手动安装和一键安装脚本两种方式,安装流程非常简单.Docker官方手动安装教程升级yumyum update安装依赖包sudo yum install -y ...

CentOS 7 安装 docker compose 教程

CentOS 7 安装 docker compose 教程

前言正在折腾测试些docker容器,用到docker compose功能,记录一下安装流程.CentOS 7 上Docker的安装方法参考:CentOS 7 安装Docker教程三种安装方法官方安装 - 速度慢,有可能被DNS污染导致失败....

CentOS 7 挂载腾讯云COS对象存储教程

CentOS 7 挂载腾讯云COS对象存储教程

前言本文将详解使用腾讯云cosfs工具将COS对象存储的存储桶挂载到CentOS 7服务器的教程.其他平台及常见问题请参考官方说明:腾讯云COSFS 工具COSFS 工具类常见问题安装COSFS工具获取源码git clone&nb...

部署 docker 官方 registry 私有镜像仓库和镜像加速仓库

部署 docker 官方 registry 私有镜像仓库和镜像加速仓库

前言在折腾 docker 的路上,必然会遇到拉取镜像速度不理想的问题,在加上可能会需要私有的镜像仓库.而使用 docker 官方的 registry 镜像来部署服务就可以解决此两种需求.需要注意的是 : 镜像加速和私有仓库两种需求需要分别部...

发表评论

访客

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