使用Node.js构建包制作Docker镜像
目标
本文旨在帮助用户了解如何使用软件开发平台编译构建服务打包Node.js项目及制作构建包的Docker镜像。
前提准备
- 了解Node.js环境的安装和基本操作。
- 了解Docker的基本概念、环境安装和基本操作,关于如何在各个操作系统平台安装docker,请参考Docker官方文档。
构建准备
如果是初次使用DevCloud,请先新建项目,然后开始本示例。
- 在本地创建一个用于存放代码的目录“nodesource”并进入该目录。在“nodesource”目录新建名称为“package.json”的文件,内容如下:
{ "name": "docker_web_app", "version": "1.0.0", "description": "Node.js on Docker", "author": "First Last <first.last@example.com>", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.16.1" } }
继续新建名为“server.js”的文件,内容如下:'use strict'; const express =require('express'); // Constants const PORT=8080; const HOST='0.0.0.0'; // App const app =express(); app.get('/',(req, res)=>{ res.send('Hello world\n'); }); app.listen(PORT,HOST); console.log(`Running on http://${HOST}:${PORT}`);
- 本地验证。
代码准备好之后,可以在本地先编译,然后将项目运行起来,看结果是否正常。
首先,打开一个命令行,cd到nodesource所在目录,输入“npm install”完成依赖安装,再输入“node server.js”运行项目。
然后,打开浏览器,在浏览器中输入“本机IP:8080”,如果出现下图结果,则表示服务运行正常。
- 在“nodesource”目录下,继续新建“Dockerfile”文件,内容如下:
#use the latest LTS (long term support) version 12 of node available from the Docker Hub FROM node:12 # Create app directory WORKDIR /usr/src/app # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@6+) COPY package*.json ./ RUN npm install # If you are building your code for production # RUN npm ci --only=production # Bundle app source COPY . . EXPOSE 8080 CMD ["node","server.js"]
再新建“.dockerignore”,内容如下:node_modules npm-debug.log
- 上传代码至代码托管服务。
进入代码托管服务,创建代码仓库“nodesource”,然后上传代码至代码仓库,代码上传完后,可进入代码仓库查看内容。
打包并制作、推送镜像
- 新建构建任务,其中,代码源选择刚创建好的代码仓库“nodesource”,构建模板选择“npm”,并将任务名称命名为“nodesource-build”。
- 配置构建步骤。
- 配置完所有构建步骤,单击“新建并执行”,执行编译构建任务。
任务执行成功后,从日志里可以查看到新的镜像地址。
查看并验证构建结果
- 查看发布库软件包。
进入发布服务,按照目录结构“项目名/nodeserver/v0.0.1”找到上传的“nodeserver.zip”包。
- 获取镜像下载指令并将镜像设置为公开镜像。
- 进入容器镜像服务SWR,单击左侧导航栏“我的镜像”,搜索并单击刚制作好的“nodestudy”镜像。
- 进入镜像详情页,单击“下载指令”列的
,获取完整的镜像下载指令(docker pull + 镜像地址)。
- 选中镜像版本“v1.1.0”,单击右上角的“编辑”,在弹框中选择“公开”,然后单击“确定”。
- 进入容器镜像服务SWR,单击左侧导航栏“我的镜像”,搜索并单击刚制作好的“nodestudy”镜像。
- 验证镜像。
