一、云服务器docker-compose部署
安装docker环境
安装工具包
yum install yum-utils device-mapper-persistent-data lvm2 -y |

设置阿里镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |

安装docker
yum install docker-ce docker-ce-cli containerd.io -y |
启动docker
systemctl start docker |
设置docker镜像源
vi /etc/docker/daemon.json |
{ |
后续拉取镜像直接从 https://hub.docker.com 网站拉取速度更快
重启docker
systemctl restart docker |
安装mysql镜像测试
docker pull daocloud.io/library/mysql:8.0.20 |

运行mysql镜像
docker run -d -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456(设置登录密码) be0dbf01a0f3(镜像ID) |

进入mysql容器内部

至此mysql镜像搭建成功,下面我们使用
docker-compose来管理docker容器,不在单独一个个安装MySQL、redis、nginx
安装docker-compose
# 使用国内源安装 |
设置docker-compose执行权限
chmod +x /usr/local/bin/docker-compose |
创建软链
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
测试是否安装成功:
$ docker-compose --version |
编写docker-compose
version: "3.0" |
nestjs/Dockerfile
FROM daocloud.io/library/node:14.7.0 |
修改代码


开放云服务器端口
开放端口9000、6380、3307
启动项目
docker-compose -h查看命令
docker-compose up启动服务,控制台可见日志docker-compose up -d后台启动服务docker-compose build --no-cache重新构建镜像不使用缓存(最后docker-compose up -d启动)- 停止服务
docker-compose down - 下载镜像过程
docker-compose pull - 重启服务
docker-compose restart
后台启动服务 docker-compose up -d


测试



二、微信云托管部署
云托管流水线部署更方便
redis服务
这里我们上面部署使用的自建服务器上docker搭建的redis服务作为演示

mysql服务
这里我们上面部署使用的自建服务器上docker搭建的mysql服务作为演示

修改代码


然后上传代码到github,通过云托管流水线构建
新建服务


点击发布后,云托管会执行Dockerfile构建流水线,到日志可以查看构建进度


微信云托管部署成功后,可以在实例列表,点击进入容器看到代码,这里里面的内容不能修改,在容器启动后会覆盖


调试接口


测试redis


三、腾讯云serverless部署
需要注意,云函数的代码包不能超过500M

模板部署 – 部署 Nest.js 示例代码
- 登录 Serverless 应用控制台。
- 单击新建应用,选择Web 应用>Nest.js 框架,如下图所示:

- 单击“下一步”,完成基础配置选择

- 上传方式,选择示例代码直接部署,单击完成,即可开始应用的部署。
- 部署完成后,您可在应用详情页面,查看示例应用的基本信息,并通过 API 网关生成的访问路径 URL 进行访问,查看您部署的 Nest.js 项目

自定义部署nest
初始化您的 Nest.js 项目
npm i -g @nestjs/cli |
在根目录下,执行以下命令在本地直接启动服务。
cd nest-app && npm run start |
打开浏览器访问 http://localhost:3000,即可在本地完成 Nest.js 示例项目的访问。
部署上云
接下来执行以下步骤,对已初始化的项目进行简单修改,使其可以通过 Web Function 快速部署,此处项目改造通常分为以下两步:
- 新增
scf_bootstrap启动文件。 - 修改监听地址与端口为
0.0.0.0:9000。
- 修改启动文件
main.ts,监听端口改为9000:

- 在项目根目录下新建
scf_bootstrap启动文件,在该文件添加如下内容(用于启动服务):
您也可以在控制台完成该模块配置。

# scf_bootstrap |
新建完成后,还需执行以下命令修改文件可执行权限,默认需要 777 或 755 权限才可正常启动。示例如下:
chmod 777 scf_bootstrap |
本地配置完成后,执行启动文件,确保您的服务可以本地正常启动,接下来,登录 Serverless 应用控制台,选择Web 应用>Nest.js 框架,上传方式可以选择本地上传或代码仓库拉取
注意:启动文件以项目内文件为准,如果您的项目里已经包含 scf_bootstrap 文件,将不会覆盖该内容。

单个函数代码体积 500mb 的上限。在实际操作中,云函数虽然提供了 500mb

关于绕过配额问题:
如果超的不多,那么使用 npm install --production 就能解决问题