1. 在 /home 下,先赋予当前用户读写权限,chmod 777 ./nodejs/ ,而后新建/nodejs/demo1文件夹和 /nodejs/Dockerfile文件,node
/nodejs/demo1文件夹 用来放项目源码docker
/nodejs/Dockerfile文件自动化跑脚本npm
2.demo1文件夹下,有server.js、package.jsonjson
// server.js const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello docker'; }); app.listen(8081);
package.json浏览器
{ "name": "demo1", "version": "1.0.0", "private": true, "scripts": { "start": "node server.js" }, "dependencies": { "koa": "^2.5.0" } }
3. Dockerfilebash
FROM node:8.9-alpine # 做者 MAINTAINER fengnovo # 执行命令,建立文件夹 RUN mkdir -p /home/nodejs/demoProject1 # 将demoProject1目录拷贝到镜像里 ADD ./demo1 /home/nodejs/demoProject1 # 指定工做目录 WORKDIR /home/nodejs/demoProject1 # 安装依赖及构建node应用 RUN npm install # RUN npm build # 配置系统变量,指定端口 ENV HOST 0.0.0.0 ENV PORT 8081 #对外暴露的端口 EXPOSE 3000 #程序启动脚本 CMD ["npm", "start"]
4.在nodejs目录下运行app
docker build -t demo1 .koa
5. 完了,再运行curl
docker imagesasync
能够看到
REPOSITORY TAG IMAGE ID CREATED SIZE
demo1 latest 9ec9bfe046e8 About a minute ago 69.5MB
6.完了,再运行,下面是将8081映射到8080端口
docker run -d -p 8080:8081 demo1
能够看到
99288344034ca2093ad2e9a558e3c5d0bb25f6ec882f93ce2e4bc2e041819a83
docker ps 能够看到
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99288344034c demo1 "npm start" 9 seconds ago Up 8 seconds 0.0.0.0:8080->8081/tcp wonderful_murdock
7.验证
curl -i localhost:8080
浏览器也能够输入xxx.xxx.xxx.xxx(ip):8080