概念

整个系统中,可以这么概述

项目-->服务

那怎么划分项目,怎么划分服务呢?

我们以商城为例

商城为一个项目

那么服务可以包括

①接口:后端的主要接口服务

②H5:比如web端的网页

③Manage:后台管理端

如果用nginx来划分的话会更有说服力

一个upstream就是一个服务

比如API是.NET开发的

H5是前端开发的

超级管理员
代码

和项目的代码一样,具有一样的意义

1.用小写

2.不要包含特殊符号_等

作为项目中服务的镜像名称的前缀

尽可能的让查看镜像列表的时候可以一目了然的知道这个镜像是某一个项目的某一个服务的!

超级管理员
名称



最好是前面加项目的名称

比如

贴代码文档-接口

这样可以很清晰的知道这个服务是干嘛的,率属于哪个项目的!

超级管理员
状态

状态正常的服务,会每隔一段时间检查运行的容器数是否满足条件要求

状态正常的服务,在同步客户端才可以看到

超级管理员
服务类型

表示当前服务的类型

要看当前服务的运行状态

【静态模式】

比如静态页面,

那就是静态模式,这种一般是存放在服务器的一个文件夹即可,然后nginx的root指定到这个地方即可

而接口,一般是

【发布模式】

发布模式是指,开发机上发布到文件夹,然后通过PasteSpiderFile同步到服务器,然后在服务器上构建镜像,最后运行容器

【源码模式】

这个就是他们说的CI/CD,就是你写完代码了,提交到对应的SVN/GIT后,服务器自动从对应的源码库拉取源码

然后在服务器上进行编译发布,发布后的流程和发布模式是一样的,构建镜像然后运行容器

【镜像模式】

比如你要运行一个redis,或者运行一个mysql,这种镜像已知的,不需要构建镜像的,就选择这个类型!

超级管理员
监听端口

这个要看实际情况

有些是5000,80,8080,9000

你可以打开运行服务的日志等级,看看日志监听的端口是多少

.net8.0 默认是8080

.net8.0之前默认是80

thinkphp 默认是8000

这里的端口是指你的服务在容器内运行的时候监听的哪个端口!

如果有多个,你需要使用英文的逗号隔开,比如80,443

这里的监听有顺序的,在nginx的时候需要用到

超级管理员
启动参数

这个就是docker run或者podman run的时候的命令

一般是 -p -v -e 的内容

比如

-p 8000:80

-v /spider/log/abc:/app/log/

注意有些有空格的需要注意

-e Config:Model="xxxx xxxx"

这个其实可以在运行任务的时候,从任务详细中查看运行的命令是哪些!

超级管理员
直接目录

!!!注意目录需要是工作目录之下的!!!

除非你不需要使用到文件同步等功能!

默认情况下,假设工作目录为/spider/

则静态文件的默认存放地方是

/spider/static/project_code/service_code/

如果你不想把当前服务的文件存放到默认目录中

就填写这个直接目录

比如在管理端,客户端的时候我们经常是拆分2个服务的,但是在部署上,前端一般属于管理端的一部分

/page/manage

/page/h5

这个时候就一般会使用直接目录


超级管理员
镜像名称

文件类型为

【镜像模式】

的时候使用

比如

redis:latest

这个一般你要使用docker images或者podman images

查看下镜像的完整名称!!!

就是name:tag的组合

超级管理员
端口映射

如果是集群,多个服务器部署一般需要打开这个

就是会在启动的时候生成-p xxx:xxx

而使用到的服务器的端口,就要看服务器的开放端口这里获取了

系统会自动获取可用的,所以服务器的开放端口一般是一个区间,比如10000-10100

这里表示有100个灵活的端口可用

PasteSpider在使用的时候,会先读取下哪些被使用了,从小到大,获取最近可用的端口

然后赋给docker/podman的run的-p使用

超级管理员
清理缓存

执行命令之前是否先执行

echo 1 > /proc/sys/vm/drop_caches

这个后续可能会改版成,如果内存不足多少,则执行这个命令

超级管理员
更新Nginx

这个要看,当前服务是否对这个项目的nginx有影响

主要是涉及upstream的server的

因为IP等会变动

还有就是正在访问的用户

如果打开了且运行容器大于1,这个时候的升级一般是平滑升级的

就是对于访客一般没啥感觉

没啥感觉就升级完成了,溜不溜?

超级管理员
使用仓库

是否使用docker registory

需要有创建docker registory

而且要和当前服务器有绑定关系

使用仓库的时候:

在服务器上构建镜像后,镜像推送到私有仓库

然后要运行的服务器上的docker/podman从私有仓库中pull镜像

然后才是podman run/docker run运行容器

所以如果是单台服务器,建议不用私有仓库,这样效率会更高!

超级管理员
自动重启

对于docker来说

就是启动的时候 是否附带了命令

--restart=always

对于podman来说,在服务器重启后

pastespider是否会重启这个服务(前提是pastespdier要先启动!)

超级管理员
升级拆分

如果你的服务部署了多个容器

则表示这些容器升级的拆分次数

次数之间至少有10秒的等待期,这个10秒是为了让nginx的过渡

这样对于用户来说能够平滑升级

超级管理员
保存版本

表示镜像的保存版本号

早于保存版本号个数的,将在构建后删除

最早的版本号为1000,比如升级到1006的时候,会删除1001这个版本号的镜像!

超级管理员
服务器

多选,或者选一个

表示这个服务运行在哪些服务器上

超级管理员
环境

表示这个服务,需要运行哪些环境

超级管理员
前置命令

这里指构建镜像前的命令

一般是比如复制配置文件

整理一些特殊的资源文件等

如果是配置建议使用key-val的模式

也就是写入到环境变量中!

超级管理员
执行参数

说到这个不得不说下Dockerfile

大概如下

FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine AS base
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add --no-cache tzdata
ENV TZ="Asia/Shanghai"
ENV LANG C.UTF-8
FROM base AS final
WORKDIR /app
EXPOSE 80
COPY . .
ENTRYPOINT ["dotnet", "PasteSpider.HttpApi.Host.dll"]

注意看最后面的ENTRYPOINT

我的理解就是最后执行哪个命令

如果这个命令用启动命令来配置呢?

就是这个执行参数的意思!

以下是使用在node的案例

FROM node:alpine as base
# 19.7.0
WORKDIR /app
COPY . .
#COPY package.json ./
#COPY wsserver.js ./
#RUN npm config set registry http://registry.npm.taobao.org
#RUN npm install
FROM base AS final
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
#COPY . .
EXPOSE 80
#CMD [ "node", "demo.js" ]
#CMD [ "node", "server.js" ]

看上面,注意#开头表示注释

所以上面的这个是没用启动命令的

所以这个时候的执行参数就是

node server.js arg1 arg2 arg3

所以这个执行参数看情况使用!

超级管理员
参数一二三

就是额外参数

用于宏使用的

比如docker run的时候

或者是nginx的配置的地方 都可以使用

超级管理员
后置命令

升级完成后执行的命令

和前置命令的概念一样

要看实际需求是咋样的!

超级管理员
OSS

如果有需要,则表示把当前服务的文件存储到OSS中

目前是阿里云的对象存储

需要去“服务信息”-“OSS”中配置对应的OSS信息!

超级管理员
贴代码框架
贴代码框架PasteForm的在线文档,主要介绍理念和特性及实际案例!
贴代码文档
什么才叫操作文档?对于操作人员来说,遇到哪个字段不懂意思,点击下即可查阅说明,这就是最好的文档!
PasteSpider在线操作文档
PasteSpider是专门为开发者开发的部署工具,五分钟上手,小内存服务器也可以使用,使用旁载模式,运行更安全!!!目前仅支持linux的服务器,win服务器的版本将在不久到来!
贴代码在线客服文档
是客服系统也是营销系统,支持丰富的话术配置,支持自定义消息格式,支持多站点入驻模式,一键部署快速搭建!