记录:nuxt3项目使用docker部署在华为云上
购买华为云服务器
配置
付费模式
硬件
操作系统
网络配置
高级配置
记录密码,后续远程登录时要用。
确认配置
服务器安装docker
远程登录
安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
然后更新本地镜像源:
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
docker
docker版本:
CE( Community Edition)是社区版,简单理解是免费使用,提供小企业与小的IT团队使用,希望从Docker开始,并尝试基于容器的应用程序部署。
EE(Docker Enterprise Edition)是企业版,收费。提供功能更强。适合大企业与打的IT团队。为企业开发和IT团队设计,他们在生产中构建、交付和运行业务关键应用程序
安装docker
yum install -y docker-ce
系统启动时自动启动docker
systemctl enable docker
启动docker
systemctl start docker
配置docker镜像加速
docker官方镜像仓库网速较差,我们需要设置国内镜像服务:
参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
项目打包
nuxt3项目打包
npm run build
打包后,在.output目录里就是打包好的SSR项目文件。
在.output/下创建个Dockerfile文件。这个里面是编写的docker项目运行环境、打包镜像和运行项目命令的一个配置文件。
查看开发所用的 node 版本
新建dockerfile
编写dockerfile
# 基于镜像node版本
FROM node:18.18.0
# 参数,node的环境为生产环境
ENV NODE_ENV=production
# 任意ip
ENV HOST 0.0.0.0
# 容器内创建目录/nuxt3
RUN mkdir -p /nuxt3
# 复制当前的内容到容器内容部目录/nuxt3
COPY . /nuxt3/
# 切换工作目录到/nuxt3
WORKDIR /nuxt3
# 暴露端口3000,默认端口
EXPOSE 3000
# start
CMD ["node","./server/index.mjs"]
打包项目
使用7-zip把public、server、dockerfile、nitro.json都压缩到nuxt.tar
在服务器home目录下创建web文件夹
上传到服务器
转到web目录下
cd /
cd home/web
ls
解压tar文件
tar -xvf nuxt.tar
构建镜像
名称为group_web
docker build -t group_web .
使用以下命令查看是否创建成功
docker images
创建容器
创建一个运行该镜像的容器,命名为my_group_web,并映射端口(服务器端口:容器端口)
docker run --name my_group_web -d -p 9020:3000 group_web
查看容器
docker ps //正在运行的容器
or
docker ps -a //所有容器
访问项目
地址:公网ip:9020
如果打不开请检查服务器安全组
选中WebServer,嫌麻烦直接选中FullAccess,然后再次访问即可。
进入安全组:
配置规则
添加规则即可
更新项目
需要执行:停止容器、删除容器、重新进行项目打包、创建并运行镜像。
查看容器
docker ps
停止容器
docker stop my_group_web
删除容器
docker rm -f my_group_web
查看是否删除成功
docker ps -a
删除镜像
docker rmi -f group_web
进入home/web
cd /
cd home/web
删除文件和文件夹
rm * -rf
重新执行项目打包步骤