部署
概述
要将我们的软件提供给甲方在生产环境中使用, 必须要进行部署.
部署有很多情况, 有时, 甲方需要我们提供数据库和服务器, 有时甲方也需要在他们自己的数据库和服务器中部署.
部署的具体方法也各有不同, 例如可以用docker之类的一键式处理, 也可以直接在机器上原生部署.
模式
托管+docker 模式
这是我们最常见的模式, 我们将准备数据库和服务器, 然后将代码打包成docker在服务器上运行.
数据库我们会采用第三方购买的数据库(如阿里云, 腾讯云), 我们会将前端和后端打入一个docker中, 再在其中配置nginx进行转发.
我们会在仓库中配置github action, 当使用git推送tag时, 会触发该命令, 自动构建镜像, 连到服务器启停docker服务等.
这样, 只需提交tag后等数分钟, 项目即可自动部署完成.
甲方机器+docker 模式
该模式中, 甲方将提供数据库和服务器, 同时其服务器可以运行docker.
此时, 我们会在本地打包出docker镜像, 在甲方服务器导入并运行.
甲方机器+原生 模式
该模式中, 甲方将提供数据库和服务器, 但其服务器不能运行docker.
此时, 我们只需要将项目拉取后, 设置生产环境的环境变量, 然后使用命令运行.
代码适配
为了适配以上情况, 我们的代码应该有多种准备:
- 我们的代码应该有原生运行的能力, 只需要安装依赖后修改环境变量, 然后使用命令即可运行.
- 我们的代码应该带有dockerfile文件, 只需要运行命令, 即可打包出docker镜像.
- 我们的代码应该包含github action配置, 当我们推送tag后, action自动打包镜像并托管在github的docker镜像仓库中.
- 我们的代码应该包含github action配置, 当我们推送tag后, action自动连上服务器更新docker服务.