使用docker容器 将node应用程序打包成镜像

可以使得node服务应用程序可以通过流水线部署

安装docker

1、注意

我的服务器的系统是 centos7,所以这里写的是在centos7上按照的docker

注意:Docker 要求 CentOS 系统的内容版本高于3.10

uname -r

打印:3.10.0-1160.105.1.el7.x86_64 //确定centos内核版本高于3.10后,接下来开始安装

2、安装所需软件包

1、安装依赖工具
sudo yum install -y yum-utils
2、添加 Docker YUM 存储库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、安装 Docke
sudo yum install -y docker-ce docker-ce-cli containerd.io
4、验证docker是否安装成功
docker -v
Docker version 24.0.7, build afdd53b
5、启动docker
sudo systemctl start docker

或者安装指定docker版本

1、查看所有仓库中的docker版本
yum list docker-ce --showduplicates | sort -r
2、安装指定
# 这里安装的是最新版本
sudo yum install docker-ce
# 指定版本安装如下
sudo yum install docker-ce-19.03.09

1、进入项目

在这里插入图片描述

2、新增编辑docker文件

1、新增一个Dockerfile文件

touch Dockerfile //新增一个dockerfile

2、打开 Dockerfile文件

vim Dockerfile 

3、编辑 Dockerfile

按 a 键 进入编辑

4、dockerfile 代码如下

# FROM 表示设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载。
# 指定我们的基础镜像是node,latest表示版本是最新
#dockere镜像
FROM node:latest

#拷贝当前node项目文件夹下所有文件到镜像的/root/wwwroot下
COPY . /root/wwwroot/

#进入镜像/root/wwwroot文件夹下,安装对应的依赖
WORKDIR /root/wwwroot/

# 容器对外暴露的端口号(我的nestjs运行的端口号是8213)
#这个端口是在访问这个node服务器的端口
#对外暴露的端口
EXPOSE 8213

#安装依赖:通过npm安装依赖时,有时会报错,这时可以通过安装cnpm来安装依赖
RUN npm install cnpm -g --registry=https://registry.nlark.com
RUN cnpm install

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

# 我这个node程序启动服务的代码是server.js 因项目而异,这个代码是启动pm2服务的js哦: pm2 start **.js 哦
#启动程序
CMD node server.js

3、将node项目打包成镜像并运行

注意

要切换到 Dockerfile 所在的位置,如果创建完dockerfile文件没切过目录就不用动

1、生成node 项目镜像

# -t表示指定镜像的名字, . 点表示当前目录
# 用于构建一个名为 mynode 的镜像文件,并将其标签为 v1
[root@1111 austin-admin]# docker build -t mynode:v1 .

2、查看本地 docker的镜像

这个IMAGE ID 下面的这个id是你生成的node镜像

[root@1111 austin-admin]# docker images
REPOSITORY    TAG    IMAGE ID       CREATED        SIZE
mynodes       v1     a862a7dc9f4c   17 hours ago   1.22GB

3、运行启动镜像

-d 表示后台运行

-p 表示指定端口映射 (8213:8002)表示(本机端口:容器端口);【8213是我的nodejs项目中的 dockerfile 代码文件中监听的访问端口,也是容器对外暴露的端口,(也就是dockerfile 文件的代码端口: EXPOSE 3000)】,【8002 则是我 node 项目程序中 server.js 的中的端口号,(也就是node 服务程序起的端口号)】

镜像名后面的:v1 表示打标签号

docker run -d -p 8213:8002 mynodes:v1
运行结果
[root@aaZZ austin-admin]# docker run -d -p 8213:8002 mynodes:v1
4fa6ea1a2a3d1w2e1rs1daf1a2b3c5b18db1a2v2va3b3f6fa5305584c832160f9c410d83
查看容器的运行情况
[root@1131231334 austin-admin]#  docker ps
CONTAINER ID  IMAGE       COMMAND                 CREATED        STATUS        PORTS           					NAMES
6f4a6e2a2568a2b  mynodes:v1  "docker-entrypoint.s…"  2 minutes ago  Up 2 minutes  8213/tcp, 0.0.0.0:8213->8002/tc    kind_payne
访问

通过浏览器访问node容器项目,ip是服务器的ip,端口是对外暴露的端口

http://11.11.11.7:8213/#/crud/list  

4、关闭运行的容器

1、关闭

docker stop 6f4a6e2a2568a2b

2、重新开启

如果是通过stop关闭的不要使用 docker run来启动,使用start

docker start 6f4a6e2a2568a2b

3、想一键删除所有

将你要删除 将下面的 mynode 关键词替换成你要删除的 docker

docker ps -a | egrep '^mynode\:*{1,9}' | awk '{print $1}' | xargs -r docker stop && docker ps -a | egrep '^mynode\:*{1,9}' | awk '{print $1}' | xargs -r docker rm && docker images | egrep '^mynode\:*{1,9}'| awk '{print $3}' | xargs -r docker rmi -f 

4、单个删除

删除docker 的容器

docker rm 容器id

删除docker 的镜像

docker rmi 镜像id
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以为您提供一个Node.js Docker镜像的示例:FROM node:latestWORKDIR /usr/src/appCOPY package*.json ./RUN npm installCOPY . .EXPOSE 8080CMD [ "node", "server.js" ] ### 回答2: 编写一个Node.js Docker镜像可以让我们在容器中运行Node.js应用程序。下面是一些步骤,以帮助您编写一个Node.js Docker镜像: 1. 创建一个新的目录,用于存放Dockerfile和Node.js应用程序文件。进入该目录。 2. 在该目录中创建一个名为Dockerfile的文件,并使用任何文本编辑器打开它。 3. 在Dockerfile中添加以下内容: ``` # 使用Node.js官方提供的Node镜像作为基础镜像 FROM node:latest # 将当前工作目录设置为/app WORKDIR /app # 将package.json和package-lock.json复制到工作目录 COPY package*.json ./ # 安装Node.js依赖项 RUN npm install # 将当前目录的所有文件复制到工作目录 COPY . . # 开放容器的3000端口(如果您的应用程序运行在其他端口上,请相应地修改) EXPOSE 3000 # 在容器启动时运行的命令 CMD [ "node", "app.js" ] ``` 4. 将您的Node.js应用程序文件复制到与Dockerfile相同的目录中。确保您的入口文件命名为app.js,或根据实际情况修改CMD命令。 5. 保存并关闭Dockerfile。 6. 打开命令行终端,进入到存放Dockerfile的目录。 7. 在终端中运行以下命令来构建Docker镜像: ``` docker build -t my-node-app . ``` 其中,my-node-app是您给该镜像起的名称。请注意,命令最后有一个点(表示Dockerfile所在的当前目录)。 8. 等待构建过程完。一旦完,您可以使用以下命令来运行该镜像: ``` docker run -p 3000:3000 -d my-node-app ``` 其中,3000:3000表示将容器的3000端口映射到主机的3000端口,-d参数表示在后台运行容器。 现在,您已经功地编写了一个Node.js的Docker镜像,并且可以在容器中运行您的应用程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值