初探 Node.js 应用 Docker 化

August 19 2016 , Category: Node.js

Docker 是当下最流行的容器技术,最近稍稍研究了下如何使用 Docker 来创建一个 Node.js 项目的镜像。

此文抛砖引玉,大家可以来讨论一下关于 Docker 的一些知识与应用 :doge:

创建一个简单的 Node.js 应用

const express = require('express')
const app = express()
const PORT = 4000

app.get('/', (req, res) => {
  res.send('docker demo')
})

app.listen(PORT, () => {
  console.log('Server started on port %s', PORT)
})

创建 Dockerfile

Dockerfile 有点类似 Docker 镜像的配置文件

FROM node:argon

# 应用在容器中的路径
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# 安装项目依赖
COPY package.json /usr/src/app
RUN npm install

# 将项目挪到之前配置的路径中
COPY . /usr/src/app

# Docker 中应用运行的端口
EXPOSE 4000

# 启动项目
CMD ["npm", "start"]

构建镜像

docker built -t shaochunhua/node-docker-demo

构建的过程会先拉取 Dockerfile 中配置的镜像 node:argon,但是 Docker 官方的镜像速度会非常慢,所以可以在启动 Docker 的时候使用阿里云的镜像地址:

sudo docker --registry-mirror=https://q4spmgrj.mirror.aliyuncs.com -d

使用构建的镜像

docker run -p 4000:4000 -d shaochunhua/node-docker-demo

其中可以映射实际上机器访问的地址与 Docker 中的地址,启动之后就可以在 http://localhost:4000 访问了。

其他

Docker 的安装都可以参照官方的文档,例如 CentOS: installation

macOS 可以直接安装官方的 App,非常方便。

对于 Docker 进程的管理可以完全通过命令行进行操作,例如 docker ps , docker restart 等。

支持作者 | Article licensed under CC BY-NC-SA 4.0