服务器: 阿里轻量应用服务器
操作系统: Ubuntu 20.04
这里简单部署一下nestjs + mysql 项目:
1.安装docker
具体可参考:
https://blog.youkuaiyun.com/baidu_35805755/article/details/121557383
删除原有的docker
# 删除docker相关软件
sudo apt-get autoremove docker docker-ce-* docker-engine docker.io containerd runc
# 卸载docker相关deb包
dpkg -l | grep docker
# 删除相关文件和文件夹
sudo rm -rf /etc/systemd/system/docker.service.d
sudo rm -rf /var/lib/docker
安装相关apt依赖
# 更新依赖
sudo apt-get update
# 安装依赖
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
配置docker相关秘钥
# 添加秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 验证秘钥
sudo apt-key fingerprint 0EBFCD88
添加docker apt仓库
# 添加docker apt仓库,适用于x86_64/amd64指令集
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 更新apt仓库
sudo apt-get update
开始安装
sudo apt-get install docker-ce docker-ce-cli containerd.io
启动docker
# 启动docker
sudo systemctl start docker
# wsl请用
sudo service docker start
配置镜像加速
# 进入
cd /etc/docker/
# 创建文件
sudo touch daemon.json
# 编辑文件,拷贝daemon.json中内容,保存退出
sudo gedit /etc/docker/daemon.json
# 重新启动docker
sudo systemctl restart docker
daemon.json内容
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com","http://registry.docker-cn.com"]
}
2.docker安装mysql
拉取mysql
# 拉取最新版mysql
# sudo docker pull mysql
# 拉取指定版本
sudo docker pull mysql:5.7
创建mysql实例
sudo docker run -d -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
-d 执行镜像源
-p 指定端口
-v 配置mysql数据卷挂载
将docker镜像中的mysql数据映射到本地目录下
-e MYSQL_ROOT_PASSWORD=123456 数据库密码
–name 名称
测试mysql
docker ps -a
3.部署nestjs
安装node
sudo docker pull node:16.19.0
将除node_modules文件上传至服务器
创建Dockerfile文件放到同层级下
编写以下内容:
FROM node:16.19.0
# 创建工作目录
RUN mkdir -p /nest
# 指定工作目录
WORKDIR /nest
# 复制当前文件到工作目录
COPY . ./
# npm 安装依赖
RUN npm install
# 打包
RUN npm run build
# 启动服务
CMD npm run start:prod
# 暴露端口
EXPOSE 8000
创建docker镜像
# 跳转到 Dockerfile 目录下
cd /opt/nest
# 构建
docker build -f /opt/nest/Dockerfile -t nest:1.0 .
# 查看
docker images
运行实例
此处端口是8000,可自行修改
f769be50cc1b 为上方的 imagesId
docker run -p 8000:8000 -it f769be50cc1b /bin/bash
# 执行
npm run start:prod