docker 部署项目

1.使用docker部署项目?

1
2
一般我们在部署项目的时候,又需要配置数据库,又需要下载依赖,又得调整配置文件,每一步都得重复操作。
当有了容器技术,我们就可以利用容器技术将我们的项目打包成一个镜像,然后只需要通过一条命令就可以部署项目了。

2.配置Dockerfile文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# FROM 表示设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令。
# 如果指定的镜像不存在默认会自动从Docker Hub上下载。
# 指定我们的基础镜像是node,latest表示版本是最新
FROM node:latest

# 执行命令,创建文件夹
RUN mkdir -p /home/nodeNestjs

# 将根目录下的文件都copy到container(运行此镜像的容器)文件系统的文件夹下
COPY ./nestjs /home/nodeNestjs

# WORKDIR指令用于设置Dockerfile中的RUN、CMD和ENTRYPOINT指令执行命令的工作目录(默认为/目录),该指令在Dockerfile文件中可以出现多次,如果使用相对路径则为相对于WORKDIR上一次的值,
# 例如WORKDIR /data,WORKDIR logs,RUN pwd最终输出的当前目录是/data/logs。
# cd到 /home/nodeNestjs
WORKDIR /home/nodeNestjs

# 安装项目依赖包
RUN npm install
RUN npm build

# 配置环境变量
ENV HOST 0.0.0.0
ENV PORT 3000

# 容器对外暴露的端口号(笔者的nestjs运行的端口号是3000)
EXPOSE 3000

# 容器启动时执行的命令,类似npm run start
CMD ["node", "/home/nodeNestjs/dist/main.js"]

3.将代码打包成镜像

1
2
# 切换到Dockerfile所在的位置,注意最后的.表示当前目录
docker build -t docker_node:v1.0 .

4.运行镜像

1
docker run -d --restart=always -p 3000:3000 docker_node:v1.0

5.容器报错

1
2
# 查看容器日志,进行排查
docker logs <容器ID>
-------------本文结束感谢您的阅读-------------
分享不易,请我喝杯咖啡吧~~~