前言
Chevereto 是目前最流行的图床之一.其颜值高,功能多,扩展性强,安装方便并提供了免费和付费版本满足了各种需求.由于近期沉迷于 docker 环境,于是决定尝试使用 docker compose 安装部署,并迁移现有的图片和数据库.
镜像
官方镜像支持 docker及 docker compose两种部署方法,博主推荐使用 docker compose的方案,通过挂载图片及数据库目录,可以实现非常快速的备份和迁移.
docker-compose.yml 参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<pre class="inline:true decode:1 " >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上传限制,请自行配置.
1 2 3 |
<pre class="inline:true decode:1 " >memory_limit = 256M; upload_max_filesize = 100M; post_max_size = 100M; |
配置 docker-compose.yml 文件
配置数据库
依照上文 docker-compose.yml参考,修改对应的数据库信息.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<pre class="inline:true decode:1 " >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目录中.以下为配置解说:
1 2 3 4 5 6 |
<pre class="inline:true decode:1 " >- ./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.yml和 php.ini文件的配置,运行以下命令即可启动服务.
1 2 3 4 |
<pre class="inline:true decode:1 " ># 启动命令 docker-compose up -d # 容器正常运行中如需修改配置docker-compose.yml,执行以下停止命令,修改完毕后再次执行以上启动命令. docker-compose down |
docker容器启动后, chevereto文件夹内会自动生成挂载的两个目录.分别为数据库的 database和图片文件夹 images.为使图床程序能够正常上传和删除图片,还需要配置 images文件夹权限.
1 |
<pre class="inline:true decode:1 " >chmod -R 777 images |
配置域名及反向代理
配置域名,证书,301跳转HTTPS及反向代理至8080端口即可完成部署.
nginx示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<pre class="inline:true decode:1 " >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 部署
备份数据库
登陆原服务器使用 mysqldump命令备份数据库.请确保你知道当初安装图床时所配置的 数据库名, 数据库用户名, 数据库用户密码.导出为 database.sql后拷贝至新服务器.
1 2 |
<pre class="inline:true decode:1 " >mysqldump -u user -p database > database.sql # mysqldump -u 数据库用户名 -p 数据库名 > xxxx.sql |
配置 docker-compose.yml 并运行
首先按照 上文全新安装的流程配置完毕,其中 docker-compose.yml文件内的 数据库名, 数据库用户名, 数据库用户密码与原有图床程序安装时的数据库信息一致.然后运行 docker-compose.
1 |
<pre class="inline:true decode:1 " >docker-compose up -d |
拷贝数据库文件至容器内
将备份出来的数据库文件 database.sql并拷贝至 mariadb容器内 根目录.
1 |
<pre class="inline:true decode:1 " >docker cp database.sql mariadb:/ |
进入容器恢复数据库
执行命令进入 mariadb容器的 根目录
1 |
<pre class="inline:true decode:1 " >docker exec -it mariadb /bin/bash |
使用 mysqldump命令恢复数据库,其中 user为你的数据库用户名, database为你的数据库名,执行后会提示输入 数据库用户密码.
1 |
<pre class="inline:true decode:1 " >mysqldump -u user -p database > database.sql |
迁移原图床图片
迁移原图床程序的 images文件夹内所有文件夹及文件至 docker-compose.yml所在目录的 images文件夹内.迁移完成后执行以下命令配置权限.
1 |
<pre class="inline:true decode:1 " >chmod -R 777 images |
配置域名及反向代理
依照上文教程为新服务器配置域名,证书,301跳转HTTPS及反向代理至8080端口即可完成迁移部署.
结语
本站还介绍过其他图床的安装教程,详情请参考以下链接:
本站提供免费和付费的技术支持.你可以通过留言,邮件,TG群的方式来技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面