嗨,大家好,我是希留。
上一篇文章聊了一下如何把一个nodejs项目部署上线。现在容器化技术这么火热,作为学习,这篇文章就和大家聊一聊,我是如何使用docker把一个nodejs项目部署上线的。废话不多说,下面开始进入正题:
首先在服务器上安装 Docker,参照官方极简教程,很快便能安装好,搭建 Docker 环境。(若已安装,则跳过此步骤)
要知道是否安装成功,执行以下命令,出现版本号,代表安装成功。
docker -v
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Docker 能够读取 Dockerfile 的指定进行自动构建容器。
在项目根目录新建 Dockerfile,执行命令:
touch Dockerfile
写入以下代码:
FROM mhart/alpine-node:9
WORKDIR /app
COPY . /app
RUN rm -f package-lock.json \
; rm -rf .idea \
; rm -rf node_modules \
; npm config set registry "https://registry.npm.taobao.org/" \
&& npm config set unsafe-perm true && npm install
RUN npm install pm2 -g
EXPOSE 3000
CMD ["pm2-runtime", "start", "app.js", "-n", "uni-docker"]
这个文件包含了以下命令:
编写完 Dockerfile 文件后,进入项目根目录下,就可以通过 docker build
命令来构建镜像:
sudo docker build -t uni-back-code .
等待构建成功,执行命令查看:
docker images
镜像构建完成后,就可以通过 docker run
运行容器,从而实现应用的 docker 化部暑。
执行命令:
sudo docker run -d --name uni-back-code -p 3000:3000 uni-back-code
代表启动成功,通过你的域名+/api/ 访问。
查看状态
记得上一文说过 pm2 list
来查看应用信息,在 docker 里查看命令需换成 docker exec
:
docker ps -a #查看容器信息,例如 CONTAINER ID
docker exec -it CONTAINER ID pm2 list
uni-docker 运行一切良好,部署完成。
感谢您的阅读,如有不足之处,欢迎评论区多多批评指正。