docker安装showdoc

基础安装

安装前请确保你的环境已经装好了docker服务 。docker的安装教程在网上比较多,可以搜索了解下。这里重点介绍showdoc.

  1. # 原版官方镜像安装命令(中国大陆用户不建议直接使用原版镜像,可以用后面的加速镜像)
  2. docker pull star7th/showdoc
  3. # 中国大陆镜像安装命令(安装后记得执行docker tag命令以进行重命名)
  4. docker pull registry.cn-shenzhen.aliyuncs.com/star7th/showdoc
  5. docker tag registry.cn-shenzhen.aliyuncs.com/star7th/showdoc:latest star7th/showdoc:latest
  6. ##后续命令无论使用官方镜像还是加速镜像都需要执行
  7. #新建存放showdoc数据的目录
  8. mkdir -p /showdoc_data/html
  9. chmod -R 777 /showdoc_data
  10. # 如果你是想把数据挂载到其他目录,比如说/data1,那么,可以在/data1目录下新建一个showdoc_data/目录,
  11. # 然后在根目录的新建一个软链接/showdoc_data到/data1/showdoc_data
  12. # 这样既能保持跟官方教程推荐的路径一致,又能达到自定义存储的目的.
  13. #启动showdoc容器
  14. docker run -d --name showdoc --user=root --privileged=true -p 4999:80 \
  15. -v /showdoc_data/html:/var/www/html/ star7th/showdoc

根据以上命令操作的话,往后showdoc的数据都会存放在 /showdoc_data/html 目录下。
你可以打开 http://localhost:4999 来访问showdoc (localhost可改为你的服务器域名或者IP)。账户密码是showdoc/123456,登录后你便可以看到右上方的管理后台入口。建议登录后修改密码。
对showdoc的问题或建议请至https://github.com/star7th/showdoc 出提issue。若觉得showdoc好用,不妨点个star。

如何升级

这里的升级是针对上面docker安装方式的升级。如果你原来是采用非docker安装方式(如php安装方式)的话,请跳过本部分文字,直接去看下部分。

  1. # 从原版官方库更新镜像。(中国大陆用户不建议直接使用原版镜像,可以用后面的加速镜像)
  2. docker pull star7th/showdoc
  3. # 中国大陆镜像更新命令(更新后记得执行docker tag命令以进行重命名)
  4. docker pull registry.cn-shenzhen.aliyuncs.com/star7th/showdoc
  5. docker tag registry.cn-shenzhen.aliyuncs.com/star7th/showdoc:latest star7th/showdoc:latest
  6. ##后续命令无论使用官方镜像还是加速镜像都需要执行
  7. rm -rf /showdoc_data/html_bak
  8. #备份。如果可以的话,命令中的html_bak还可以加上日期后缀,以便保留不同日期的多个备份
  9. mv /showdoc_data/html /showdoc_data/html_bak
  10. # 新建准备存放新版代码的目录
  11. mkdir -p /showdoc_data/html
  12. chmod -R 777 /showdoc_data/html
  13. # 删除旧容器
  14. docker stop showdoc && docker rm showdoc
  15. #启动showdoc容器
  16. docker run -d --name showdoc --user=root --privileged=true -p 4999:80 \
  17. -v /showdoc_data/html:/var/www/html/ star7th/showdoc
  18. #执行新代码安装。默认安装中文版。如果想安装英文版,将下面参数中的zh改为en
  19. curl http://localhost:4999/install/non_interactive.php?lang=zh
  20. #转移旧数据库
  21. \cp -f /showdoc_data/html_bak/Sqlite/showdoc.db.php /showdoc_data/html/Sqlite/showdoc.db.php
  22. #转移旧附件数据
  23. \cp -r -f /showdoc_data/html_bak/Public/Uploads/. /showdoc_data/html/Public/Uploads
  24. # 重新给权限
  25. chmod -R 777 /showdoc_data/html
  26. #如果中途出错,请重命名原来的/showdoc_data/html_bak文件为/showdoc_data/html ,然后重启容器便可恢复。

非docker安装方式如何升级到docker安装方式

先参考前文,用docker方式全新安装一个showdoc,并且做好数据持久化。
接下来,假设你原来安装的旧showdoc已上传到服务器的 /tmp/showdoc 目录,那么

  1. #转移旧数据库
  2. \cp -r -f /tmp/showdoc/Sqlite/showdoc.db.php /showdoc_data/html/Sqlite/showdoc.db.php
  3. #转移旧附件数据
  4. \cp -r -f /tmp/showdoc/Public/Uploads/. /showdoc_data/html/Public/Uploads

数据备份

备份/showdoc_data/html 目录即可。比如执行下面命令压缩存放

  1. zip -r /showdoc_data/showdoc_bak.zip /showdoc_data/html
  2. # 其中showdoc_bak.zip可以用日期后缀命名,以便多个备份。你也可以用定时任务来实现定时备份。

其他参考命令

  1. docker stop showdoc # 停止容器
  2. docker restart showdoc #重启showdoc容器
  3. docker rm showdoc #删除showdoc容器
  4. docker rmi star7th/showdoc #删除showdoc镜像
  5. docker stop $(docker ps -a -q) ;docker rm $(docker ps -a -q) ; #停止并删除所有容器。危险命令,不懂勿用。
  6. docker rmi -f `docker images | grep showdoc| awk '{print $3}'` # 删除所有名字含有showdoc关键字的镜像

配置nginx

绑定域名

这里绑定的域名是针对自动脚本或者docker安装showdoc的情况。在绑定域名之前,请确保你已经安装好了showdoc服务,确保能通过http://127.0.0.1:4999 正常访问showdoc并创建文档。假如showdoc服务本身未成功,绑定域名可能会出现一些未知问题。

绑定域名的核心思路是利用nginx转发请求到4999端口。假如你要绑定域名是 http://test.showdoc.com.cn ,则可以这样写nginx重定向规则:

  1. server {
  2. listen 80;
  3. server_name test.showdoc.com.cn;
  4. client_max_body_size 1000m;
  5. location ^~ / {
  6. proxy_pass http://127.0.0.1:4999/;
  7. proxy_redirect off;
  8. proxy_connect_timeout 90;
  9. proxy_send_timeout 90;
  10. proxy_read_timeout 90;
  11. proxy_set_header Host $host;
  12. proxy_set_header X-Real-IP $remote_addr;
  13. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  14. proxy_set_header http_user_agent $http_user_agent;
  15. }
  16. }

假如你要安装到二级目录,如 http://test.showdoc.com.cn/showdoc/ ,则可以这样写:

  1. server {
  2. listen 80;
  3. server_name test.showdoc.com.cn;
  4. client_max_body_size 1000m;
  5. location ^~ /showdoc/ {
  6. proxy_pass http://127.0.0.1:4999/;
  7. proxy_redirect off;
  8. proxy_connect_timeout 90;
  9. proxy_send_timeout 90;
  10. proxy_read_timeout 90;
  11. proxy_set_header Host $host;
  12. proxy_set_header X-Real-IP $remote_addr;
  13. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  14. proxy_set_header http_user_agent $http_user_agent;
  15. }
  16. # /server/路径和后面的/Public/路径重写是为了兼容历史
  17. # 不设置这两条重写规则不影响showdoc主体使用,但可能图片和附件访问有问题。
  18. location ^~ /server/ {
  19. proxy_pass http://127.0.0.1:4999/server/;
  20. proxy_redirect off;
  21. proxy_connect_timeout 90;
  22. proxy_send_timeout 90;
  23. proxy_read_timeout 90;
  24. proxy_set_header Host $host;
  25. proxy_set_header X-Real-IP $remote_addr;
  26. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  27. proxy_set_header http_user_agent $http_user_agent;
  28. }
  29. location ^~ /Public/ {
  30. proxy_pass http://127.0.0.1:4999/Public/;
  31. proxy_redirect off;
  32. proxy_connect_timeout 90;
  33. proxy_send_timeout 90;
  34. proxy_read_timeout 90;
  35. proxy_set_header Host $host;
  36. proxy_set_header X-Real-IP $remote_addr;
  37. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  38. proxy_set_header http_user_agent $http_user_agent;
  39. }
  40. }