docker部署nodejs应用
1. 在 /home 下,先赋予当前用户读写权限,chmod 777 ./nodejs/ ,然后新建/nodejs/demo1文件夹和 /nodejs/Dockerfile文件,
/nodejs/demo1文件夹 用来放项目源码
/nodejs/Dockerfile文件自动化跑脚本
2.demo1文件夹下,有server.js、package.json
// 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. Dockerfile
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目录下运行
docker build -t demo1 .
5. 完了,再运行
docker images
可以看到
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