阿里云服务器使用docker部署nestjs项目

服务器: 阿里轻量应用服务器
操作系统: 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

在这里插入图片描述

4.若访问不了,请检查阿里云服务器防火墙端口是否打开

### 部署应用程序到阿里云ECS上的流程 #### 使用Docker部署应用的一般过程 在阿里云ECS实例上利用Docker容器化技术来部署应用程序可以极大地简化环境配置和管理。以下是具体的操作指南: #### 准备工作 确保已经拥有了一个可用的阿里云ECS实例,并且该实例能够访问互联网以便下载必要的软件包。 #### 安装并启动Docker引擎 对于基于CentOS系统的ECS实例,可以通过执行命令`sudo yum install -y docker-ce`完成Docker CE版本的安装[^1]。之后通过如下两条指令分别用于立即开启Docker服务以及设定其随操作系统一同自动运行: ```bash sudo systemctl start docker sudo systemctl enable docker ``` 验证Docker守护进程状态正常与否可借助于命令`sudo systemctl status docker`,当返回的信息显示active(running)即表明当前Docker正在稳定运作中[^2]。 #### 下载所需的应用程序镜像 假设要部署的是MySQL数据库,则可以直接从官方仓库拉取最新版或其他指定版本的MySQL Docker镜像文件至本地缓存区,操作方式为输入`docker pull mysql:tag`(其中tag代表特定标签名),如果不加任何参数默认会获取latest标记下的映像资源。 #### 创建并运行容器 创建一个新的名为my-mysql-container的数据存储型容器实例,同时绑定宿主机端口3306与容器内部监听地址之间的转发关系,最后附加一些初始化选项如root用户的密码等,完整的CLI语句形式如下所示: ```bash docker run --name my-mysql-container -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d mysql:tag ``` 此处需要注意替换实际使用的变量值以匹配个人需求场景。 #### 访问已发布的Web应用或服务接口 如果所部属的服务提供HTTP(S)协议支持的话,在浏览器地址栏里键入公网IP加上对应的URL路径即可实现远程连接;而对于其他类型的网络通信则可能涉及到防火墙策略调整等问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值