Docker 让开发者能够打包他们的应用以及依赖包到一个可移植的容器中,而后发布到任何流行的 Linux 机器上,即可以实现虚拟化。node
index.jsweb
'use strict';
const express = require('express');
// Constants
const PORT = 6677;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
res.send('<h1>Hello world</h1>');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
复制代码
根目录新建
Dockerfile
文件docker
# 定义咱们须要从哪一个镜像进行构建
FROM node:8
# 在镜像中建立一个文件夹存放应用程序代码,这将是你的应用程序工做目录
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "index.js" ]
复制代码
.dockerignore文件express
node_modules
npm-debug.log
复制代码
这将避免你的本地模块以及调试日志被拷贝进入到你的 Docker 镜像中npm
进入到 Dockerfile 所在的那个目录中,运行如下命令构建 Docker 镜像。开关符 -t 让你标记你的镜像json
//Don’t forget the . character at the end, which sets the build context to the current directory.
docker build -t chenkai/node-web-app:v1.0.0 .
复制代码
检测镜像是否构建成功docker images | grep node-web-app
能够看到构建的镜像浏览器
运行镜像,使用 -d
模式运行镜像将以分离模式运行 Docker容器,使得容器在后台自助运行。开关符-p
在容器中把一个公共端口导向到私有的端口,请用如下命令运行你以前构建的镜像bash
docker run -p 对外暴漏端口:容器内部端口 -d chenkai/应用名称:版本
//如
docker run -p 4444:6677 -d chenkai/node-web-app:v1.0.0
复制代码
docker ps | grep node-web-app
能够看到启动的容器 docker logs -f ${CONTAINER ID }
能够看到容器输出的日志app
浏览器中输入经过容器暴露出的端口http://localhost:4444/
便可访问镜像中的node程序ui