Fork me on GitHub

Node.js + Dokcer 部署

主要讲解:服务 从创建项目(代码)到部署到流程定制。以实际案例来拖出一个理念。

涉及的主要技术

Node.js (JavaScript)

Node.js 中文网

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

docker

Docker官网

docker是一个开源的软件部署解决方案;

docker也是轻量级的应用容器框架;

docker可以打包、发布、运行任何的应用。

1. 创建一个 “Hello World!” 项目。

1.1 创建一个git仓库

github 、gitlab、bitbucket、Coding 都行。目的只是存放代码。

1.2 写代码

  1. 拉取仓库
  2. npm init 初始化环境(会自动生成一个package.json文件)
  3. 示例代码

index.js

// node.js 内容http模块
const http = require('http')

// 创建服务
const server = http.createServer(function(req, res) {
    res.end("Hello World!")
})

// 监听3000 端口
server.listen(3000)

1.3 本地运行以及测试、提交代码

运行 : node ./index.js

测试: 浏览器打开 http://localhost:3000/

确认正常后提交代码

git add ./
git commit -m "add server"
git push origin master

2. 手动打包项目为Docker镜像并运行

2.1 在项目根目录添加配置文件

.dockerignore 打包镜像时忽略的一些文件或目录

node_modules
npm-debug.log
Dockerfile*
docker-compose*
.dockerignore
.git
.gitignore
.env
*/bin
*/obj
README.md
LICENSE
.vscode

dockerfile 打包镜像配置文件

FROM node:8.9-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
EXPOSE 3000
CMD node index.js

dockerfile文件配置详解

2.2 打包镜像

进入到项目根目录,运行创建镜像命令 docker build -t demo:v1 .

-t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

通过命令查看镜像是否创建成功 docker images

2.3 运行镜像

运行命令 docker run -d -p 3000:3000 demo:v1

demo为镜像的名称,v1为tag

-d: 后台运行容器,并返回容器ID;

-p: 端口映射,格式为:主机(宿主)端口:容器端口

打开浏览器查看(该ip为部署项目的Linux的Id)

http://192.168.1.237:3000/