使用docker部署
关于镜像的一点说明❤️
基于 debian 构建,默认安装了 Nginx,Redis,PNPM,Node,MySQL,MongoDB(打包为 sugarjl/debian - debian.Dockerfile)
easypicker 镜像相关资源
- 镜像地址:sugarjl/easypicker
- 构建脚本:docker/build-latest.sh,docker/build-beta.sh,docker/build-version.mjs
- Dockerfile:docker/Dockerfile
如果你希望是用宿主机的数据库,请阅最后一部分自定义镜像
如果你对镜像构建改进有更好的建议,欢迎私聊或提issue讨论。
笔者使用的加速镜像源为:https://dockerproxy.com
快速开始
① 获取镜像
docker pull sugarjl/easypicker
② 启动镜像,并设置一个映射的端口
这里设置为6478
,同时设置容器名为easypicker2
(这些都可以根据实际情况进行修改)
docker run -d -p 6478:80 --name easypicker2 sugarjl/easypicker
运行docker ps
如果看到下面类似的日志,恭喜你,你已经成功启动了 easypicker2 🎉
可以打开浏览器访问一下 http://localhost:6478 即可看到页面
③ 获取系统账号,登录后台
docker logs easypicker2
访问 http://localhost:6478/login ,输入账号密码即可登录后台
配置服务
根据实际的情况完成 七牛云,腾讯云(可选)的配置
七牛云
参考七牛云OSS服务创建文章,获取七牛云相关的几个环境变量
设置管理员
参考线上部署文档最后一部分内容,设置管理员
user 表里,将对应的用户 power
值设置为 0 即可
下面是操作案例,将 admin
账号设置为管理员
执行sql修改目标账号权限,修改最后的 account='admin' 为目标账号即可
docker exec easypicker2 mysql -uroot -peasypicker2 -e "use easypicker2;UPDATE user SET power=0 WHERE account='admin';"
重新登录账号即可生效
更新容器
① 备份数据
# 创建备份目录
mkdir ep_backup
# 备份服务配置文件
docker cp easypicker2:/usr/share/easypicker/server/user-config.json ep_backup/user-config.json
# 备份mysql
docker exec easypicker2 mysqldump -uroot -peasypicker2 easypicker2 > ep_backup/easypicker2.sql
# 备份mongodb
docker exec easypicker2 mongodump -d easypicker2 -o /tmp/ep_backup
docker cp easypicker2:/tmp/ep_backup ep_backup/mongodb
② 停止容器
docker stop easypicker2
③ 更新镜像
docker pull sugarjl/easypicker
④ 重新创建容器
注意事项
如果要继续使用之前的容器名,需要先删除之前的容器
请确保相关数据都有备份,删除容器后无法恢复
否则使用一个新的镜像名(例如 easypicker-next)
# 移除旧容器
docker rm easypicker2
# 重新创建新的容器
docker run -d -p 6478:80 --name easypicker2 sugarjl/easypicker
⑤ 恢复数据
# 恢复配置
docker cp ep_backup/user-config.json easypicker2:/usr/share/easypicker/server/user-config.json
# 恢复mysql
docker exec -i easypicker2 mysql -uroot -peasypicker2 easypicker2 < ep_backup/easypicker2.sql
# 恢复mongodb
docker cp ep_backup/mongodb easypicker2:/tmp/ep_backup
docker exec easypicker2 mongorestore -d easypicker2 /tmp/ep_backup/easypicker2
⑥ 重启容器
docker restart easypicker2
🚧 自定义镜像
FAQ
Q1: 启动后,容器自动关闭
查看日志
docker logs easypicker2
如果有如下报错信息
SyntaxError: Unexpected token { in JSON at position 2765
at JSON.parse (<anonymous>)
at /usr/share/easypicker/server/dist/index.js:622:48
at step (/usr/share/easypicker/server/dist/index.js:337:23)
at Object.next (/usr/share/easypicker/server/dist/index.js:278:20)
at asyncGeneratorStep (/usr/share/easypicker/server/dist/index.js:20:28)
at _next (/usr/share/easypicker/server/dist/index.js:38:17)
说明配置文件 user-config.json
格式有误,可以CV出来修改一下
# 复制到当前目录下下
docker cp easypicker2:/usr/share/easypicker/server/user-config.json user-config.json
使用JSON编辑器打开,查看错误的位置
例如这里的错误
修复正确后,将配置文件重新复制到容器内即可
# 配置文件复制到容器内
docker cp user-config.json easypicker2:/usr/share/easypicker/server/user-config.json
# 重新启动
docker restart easypicker2
Q2: 宝塔面板如何使用docker部署
1 宝塔面板安装docker
2 Docker 管理器中配置加速器
{
"registry-mirrors": [
"https://dockerproxy.com"
]
}
3 按照上面的步骤运行镜像
镜像启动后可以通过 docker ps
查看容器运行情况
4 创建网站
在网站的 nginx 配置文件中添加/
路由,通过反向代理将流量转发至 docker 启动的容器
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://172.17.0.1:6480;
}
现在访问网站就可以看到内容了