【打工日常】使用Docker部署团队协作文档工具

一、ShowDoc介绍

​ShowDoc是一个适合IT团队共同协作API文档、技术文档的工具。通过showdoc,可以方便地使用markdown语法来书写出API文档、数据字典文档、技术文档、在线excel文档等等。

响应式网页设计:可将项目文档分享到电脑或移动设备查看。同时也可以将项目导出成word文件,以便离线浏览。

公开项目与私密项目:ShowDoc上的项目有公开项目和私密项目两种。公开项目可供任何登录与非登录的用户访问,而私密项目则需要输入密码验证访问。密码由项目创建者设置。

项目转让:项目创建者可以自由地把项目转让给网站的其他用户。

项目成员:你可以很方便地为ShowDoc的项目添加、删除项目成员。项目成员可以对项目进行编辑,但不可转让或删除项目(只有项目创建者才有权限)。

团队管理:利用showdoc的团队功能你可以更好地进行团队协作。

  1. markdown编辑:ShowDoc采用markdown编辑器,无论是编辑还是阅读体验都极佳很棒。

  2. 模板插入:在ShowDoc的编辑页面,点击编辑器上方的按钮可方便地插入API接口模板和数据字典模板。

  3. 历史版本:ShowDoc为页面提供历史版本功能,你可以方便地把页面恢复到之前的版本。

二、本次实践介绍

  1. 本次实践简介

本次实践部署环境为个人测试环境

  1. 本地环境规划

本次实践环境规划:下载镜像fastposter/fastposter:latest,通过docker-cli或者docker compose启动容器

镜像命名IP地址容器镜像版本操作系统版本
showdoclocalhostlatestubuntu 22.04

三、检查本地Docker环境

  1. 检查本地Docker版本

检查Docker版本:docker version  root@WellDone:/home/goodjob# docker version  
Client: Docker Engine - Community  Version:           25.0.0  API version:       1.44  Go version:        go1.21.6  Git commit:        e758fe5  Built:             Thu Jan 18 17:09:49 2024  OS/Arch:           linux/amd64  Context:           default  Server: Docker Engine - Community  Engine:  Version:          25.0.0  API version:      1.44 (minimum version 1.24)  Go version:       go1.21.6  Git commit:       615dfdf  Built:            Thu Jan 18 17:09:49 2024  OS/Arch:          linux/amd64  Experimental:     false  containerd:  Version:          1.6.27  GitCommit:        a1496014c916f9e62104b33d1bb5bd03b0858e59  runc:  Version:          1.1.11  GitCommit:        v1.1.11-0-g4bccb38  docker-init:  Version:          0.19.0  GitCommit:        de40ad0  
root@WellDone:/home/goodjob#
  1. 检查Docker服务状态

检查Docker服务状态,确保Docker服务正常运行。

systemctl status docker  root@WellDone:/home/goodjob/Downloads# systemctl status docker  
● docker.service - Docker Application Container Engine  Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)  Active: active (running) since Wed 2024-01-24 08:54:31 CST; 1 day 4h ago  
TriggeredBy: ● docker.socket  Docs: https://docs.docker.com  Main PID: 1549 (dockerd)  Tasks: 65  Memory: 419.5M  CPU: 38.874s  CGroup: /system.slice/docker.service  ├─  1549 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  ├─  2010 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.17.0.2 -container-port 6379  ├─  2016 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 6379 -container-ip 172.17.0.2 -container-port 6379  ├─  2029 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5432 -container-ip 172.17.0.3 -container-port 5432  ├─  2036 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 5432 -container-ip 172.17.0.3 -container-port 5432  ├─123083 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8888 -container-ip 172.17.0.4 -container-port 8080  └─123095 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8888 -container-ip 172.17.0.4 -container-port 8080  1月 24 08:54:31 WellDone dockerd[1549]: time="2024-01-24T08:54:31.067895045+08:00" level=info msg="API listen on /run/docker.sock"  
1月 24 08:54:31 WellDone systemd[1]: Started Docker Application Container Engine.  
1月 24 16:13:48 WellDone dockerd[1549]: time="2024-01-24T16:13:48.185008219+08:00" level=info msg="ignoring event" container=8ad99af82d8a41dd661d>  
1月 24 16:13:48 WellDone dockerd[1549]: time="2024-01-24T16:13:48.189484205+08:00" level=warning msg="ShouldRestart failed, container will not be>  
1月 24 21:58:08 WellDone dockerd[1549]: time="2024-01-24T21:58:08.024915139+08:00" level=info msg="ignoring event" container=27fd28e2993f31b170b8>  
1月 24 21:58:08 WellDone dockerd[1549]: time="2024-01-24T21:58:08.029986730+08:00" level=warning msg="ShouldRestart failed, container will not be>  
1月 25 10:46:16 WellDone dockerd[1549]: time="2024-01-25T10:46:16.329180722+08:00" level=info msg="Container failed to exit within 10s of signal >  
1月 25 10:46:16 WellDone dockerd[1549]: time="2024-01-25T10:46:16.350757439+08:00" level=info msg="ignoring event" container=b1223add00f36bbb3246>  
1月 25 10:49:21 WellDone dockerd[1549]: time="2024-01-25T10:49:21.993755983+08:00" level=info msg="Container failed to exit within 10s of signal >  
1月 25 10:49:22 WellDone dockerd[1549]: time="2024-01-25T10:49:22.015822650+08:00" level=info msg="ignoring event" container=edb0e153b45dbe62acd8>  
lines 1-28/28 (END)

四、部署showdoc镜像

  1. 下载showdoc镜像

docker pull fastposter/fastposter root@HEJIAJIN-FX506HE:/docker_software# docker pull fastposter/fastposter
Using default tag: latest
latest: Pulling from fastposter/fastposter
7d63c13d9b9b: Pull complete 
6ad2a11ca37b: Pull complete 
8076cdef4689: Pull complete 
0ba90f5a7dd0: Pull complete 
27c191df269f: Pull complete 
e332e26a6509: Pull complete 
b6aa2cfacc25: Pull complete 
Digest: sha256:0d1c173c7bc5ef6b51a815a995f06dd89b4902e4773be98687259134cf6ea267
Status: Downloaded newer image for fastposter/fastposter:latest
docker.io/fastposter/fastposter:latest
  1. 创建容器

使用docker快速创建showdoc的容器。

完整创建过程:1.使用docker-cli启动一个showdoc的容器。docker run -d --name showdoc --user=root -p 1222:80 --restart always -v /docker_software/showdoc/html:/var/www/html/ star7th/showdoc:latest2.使用docker-compose启动一个showdoc的容器  version: '3.9'
services:showdoc:image: 'star7th/showdoc:latest'volumes:- '/docker_software/showdoc/html:/var/www/html/'restart: alwaysports:- '1222:80'user: rootcontainer_name: showdoc
  1. 检查容器运行状态

检查容器的运行状态,确保服务的正常运行。
docker ps

NAME         IMAGE                    COMMAND                   SERVICE      CREATED         STATUS         PORTS
showdoc      star7th/showdoc:latest   "/entrypoint bash do…"   showdoc      3 minutes ago   Up 3 minutes   443/tcp, 9000/tcp, 0.0.0.0:1222->80/tcp, :::1222->80/tcp

查看容器运行日志
docker logs -f showdoc

Not found /var/www/html/index.php, copy...
Same version, skip upgrade.
delay 30s start mock...
2024-03-15 15:41:05,123 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
2024-03-15 15:41:05,123 INFO Included extra file "/opt/docker/etc/supervisor.d/nginx.conf" during parsing
2024-03-15 15:41:05,123 INFO Included extra file "/opt/docker/etc/supervisor.d/php-fpm.conf" during parsing
2024-03-15 15:41:05,126 INFO RPC interface 'supervisor' initialized
2024-03-15 15:41:05,126 INFO supervisord started with pid 65
2024-03-15 15:41:06,128 INFO spawned: 'nginxd' with pid 66
2024-03-15 15:41:06,129 INFO spawned: 'php-fpmd' with pid 67
-> Executing /opt/docker/bin/service.d/nginx.d//10-init.sh
2024-03-15 15:41:06,132 INFO success: nginxd entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
2024-03-15 15:41:06,132 INFO success: php-fpmd entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
-> Executing /opt/docker/bin/service.d/php-fpm.d//10-init.sh
Setting php-fpm user to application
[15-Mar-2024 15:41:06] NOTICE: fpm is running, pid 67
[15-Mar-2024 15:41:06] NOTICE: ready to handle connections
[php-fpm:access] 127.0.0.1 -  15/Mar/2024:15:41:06 +0000 "GET /index.php" 302 /app/index.php 13.245 2048 75.50%
172.24.0.1 - - [15/Mar/2024:15:41:06 +0000] "GET / HTTP/1.1" 302 5 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"
[php-fpm:access] 127.0.0.1 -  15/Mar/2024:15:41:06 +0000 "GET /install/index.php" 200 /app/install/index.php 1.296 2048 0.00%
172.24.0.1 - - [15/Mar/2024:15:41:06 +0000] "GET /install/index.php HTTP/1.1" 200 3204 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"
[php-fpm:access] 127.0.0.1 -  15/Mar/2024:15:41:26 +0000 "GET /install/ajax.php?lang=zh" 200 /app/install/ajax.php 0.698 2048 0.00%
172.24.0.1 - - [15/Mar/2024:15:41:26 +0000] "GET /install/ajax.php?lang=zh HTTP/1.1" 200 197 "http://localhost:1222/install/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"> mockServer@1.0.0 start
> npm run pm2 start index.js> mockServer@1.0.0 pm2
> node ./node_modules/pm2/bin/pm2 "start" "index.js"-------------__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\______\/\\\/\\\_\/\\\\\\________/\\\\\\__/\\\///\\\____\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\___\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/____\/\\\/____\/\\\__\///\\\/___\/\\\________/\\\//______\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//_________\/\\\_____________\/\\\_____________\/\\\___/\\\/____________\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\__\///______________\///______________\///__\///__Runtime EditionPM2 is a Production Process Manager for Node.js applicationswith a built-in Load Balancer.Start and Daemonize any application:$ pm2 start app.jsLoad Balance 4 instances of api.js:$ pm2 start api.js -i 4Monitor in production:$ pm2 monitorMake pm2 auto-boot at server restart:$ pm2 startupTo go further checkout:http://pm2.io/-------------[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /showdoc_data/mock/index.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬──────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name     │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼──────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ index    │ default     │ 1.0.0   │ fork    │ 135      │ 0s     │ 0    │ online    │ 0%       │ 26.9mb   │ root     │ disabled │
└─────┴──────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

五、访问showdoc

访问地址:http://localhost:1222

  1. 选择语言

2.查看初始化结果(初始化成功。默认管理员账户密码是showdoc/123456。)

3.进入ShowDoc登录页

4.登录ShowDoc首页

5.进入后台管理界面

6.新建项目

7.新建与编辑文档

8.团队管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/749205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WXML 模板语法

数据绑定 1. 数据绑定的基本原则 ① 在 data 中定义数据 在页面对应的 .js 文件中,把数据定义到 data 对象中即可 ② 在 WXML 中使用数据 2. Mustache 语法的格式 把 data 中的数据绑定到页面中渲染,使用 Mustache 语法(双大括号&#x…

三次握手seq和ack的流程 TCP协议栈seq和ack深层理解

☆ 大家可以把想了解的问题在评论发给我?我会根据问题补充到后面 ☆ 三次握手seq和ack的流程 是的,在TCP/IP协议中,三次握手过程确实涉及到序列号(Sequence Number, 简称Seq)和确认号(Acknowledgment Number, 简称Ack)的交换。这个过程是为了建立可靠的连接,确保数据能…

对OceanBase进行 sysbench 压测前,如何用 obdiag巡检

有一些用户想对 OceanBase 进行 sysbench 压测,并向我询问是否需要对数据库的各种参数进行调整。我想起有一个工具 obdiag ,具备对集群进行巡检的功能。因此,我正好借此机会试用一下这个工具。 obdiag 功能的比较丰富,详细情况可参…

linux网络服务学习(1):nfs

1.什么是nfs NFS:网络文件系统。 *让客户端通过网络访问服务器磁盘中的数据,是一种在linux系统间磁盘文件共享的方法。 *nfs客户端可以把远端nfs服务器的目录挂载到本地。 *nfs服务器一般用来共享视频、图片等静态数据。一般是作为被读取的对象&…

F5怎么样?保障AI服务的安全性和交付

伴随着人工智能时代的快速发展,AI已成为企业数字化转型的得力工具,比如为用户提供更好的服务,降低企业成本等。与此同时,AI技术的应用也会带来应用安全等方面的新风险,可见其有着双刃剑效应。作为一家提供多云应用安全…

如何使用ROS和easymqos快速搭建一辆语音控制导航的机器人

之前做的机器人小车基本都属于电脑或手机控制操作。目前,使用语音控制机器人小车运动,让机器人导航去指定地点,已经成为热门,并且语音识别技术已经有落地方案,可满足生活中的基本需要。有些语音芯片通过高算力处理器运…

openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优

文章目录 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优244.1 统计信息调优244.1.1 统计信息调优介绍244.1.2 实例分析:未收集统计信息导致查询性能差 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优…

XDP学习笔记

XDP的使用与eBPF程序分不开,因此要了解学历XDP,须知道什么是eBPF、什么是XDP。 概念 eBPF BPF(Berkeley Packet Filter)是一种灵活且高效的数据包过滤技术,最初由 BSD Unix 中的网络子系统引入;BPF 允许用…

WebRTC:真正了解 RTP 和 RTCP

介绍 近年来,通过互联网进行实时通信变得越来越流行,而 WebRTC 已成为通过网络实现实时通信的领先技术之一。WebRTC 使用多种协议,包括实时传输协议 (RTP) 和实时控制协议 (RTCP)。 RTP负责通过网络传输音频和视频数据,而RTCP负责…

植物miRNA数据库PmiREN2.0的使用

前记 miRNA数据库是一个用于存储和分析microRNA(miRNA)序列和相关信息的数据库。miRNA是一类具有约20-24个核苷酸的非编码小RNA分子,通过调控基因表达来参与细胞生物学过程。miRNA数据库中通常包含miRNA序列、miRNA靶向基因、miRNA表达谱、m…

以题为例浅谈文件包含

什么叫做文件包含 文件包含函数加载的参数没有经过过滤或严格定义,可以被用户控制, 包含其他恶意文件,导致了执行非预期代码。 文件包含漏洞(File Inclusion Vulnerability)是一种常见的网络安全漏洞,它允…

2023年总结:一个普通程序员如何挑选出价值千万的职业赛道

​​​​​​​ 引言 随着2023年的序幕缓缓落下,我终于在岁月的流转中捕捉到了一条隐秘而又公开的真理。它悄然告诉我们,成功并非单纯由勤劳的双手雕琢,一份耕耘未必有一份收获,而是在于我们如何在命运的十字路口作出关键选择。那…

结构体联合体枚举和位段

文章目录 结构体结构体类型的声明特殊的声明 结构的自引用结构体变量的定义和初始化结构体内存对齐为什么要内存对齐结构体传参结构体实现位段(位段的填充&可移植性)位段位段的内存分配空间如何开辟位段的跨平台问题位段的应用 枚举枚举类型的定义枚…

重学SpringBoot3-整合SSM

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-整合SSM Spring Boot整合SSM示例1. 创建Spring Boot项目2. 配置数据源3. 配置MyBatis4. 实现数据访问对象(DAO)5. 编写服务层和控…

【C++庖丁解牛】List容器的介绍及使用 | 深度剖析 | list与vector的对比

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1. list的介绍1.1 list的…

CentOS Stream9更改ip地址,网关(设置静态ip)

使用grep命令查询ens160文件所在的文件夹处 grep -rnw /etc -e ens160 然后用vi命令打开文件进行修改 vi /etc/NetworkManager/system-connections/ens160.nmconnection 配置: 假设将ip地址改为192.168.200.130 [connection] idens33 uuid0050f214-01a7-395e-…

环形链表2(C++), test ok

1. 题目 2. 思路分析: 与环形链表1一样,我们需要定义慢指针和快指针,确定链表是否有环,如果链表没有环的话,直接置空即可。如果链表有环,则需要向环形链表1一样,让快指针不断追赶慢指针&#x…

汽车电子零部件(4):行泊一体ADAS

前言: 现阶段智能汽车行业正在大规模力推无限接近于L3的L2++或L2.9自动驾驶量产落地,类似于当初智能手机替换传统手机的行业机会期。智能汽车常见的智能驾驶功能包括: 行车场景:自适应巡航控制ACC;自动变道辅助ALC;交通拥堵辅助TJA;车道居中LCC;领航辅助NOA; 泊车场…

YOLOv9改进策略:注意力机制 | EMA:基于跨空间学习的高效多尺度注意力,效果优于ECA、CBAM、CA

💡💡💡本文改进内容:加入EMA注意力,一种基于跨空间学习的高效多尺度注意力,效果优于ECA、CBAM、CA等经典注意力。 yolov9-c-EMA summary: 970 layers, 51011154 parameters, 51011122 gradients, 238.9 GF…

JavaScript 基础知识

一、初识 JavaScript 1、JS 初体验 JS 有3种书写位置&#xff0c;分别为行内、内部和外部。 示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…