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

 

 

 

posted @ 2018-12-10 22:33  fengnovo  阅读(2240)  评论(0编辑  收藏  举报