用Docker部署一个最简单的node应用
学习了一小段时间的docker,先来个docker部署最简单的一个node应用。
先编写一个js文件:
app.js:
const express = require("express");
const app = express();
app.get('/',(req,res,next)=>{
res.send('Hello,Docker!');
})
app.listen(3000,()=>{
console.info('App running~');
})
再编写一个package.json文件
package.json
{
"name": "docker-express",
"version": "0.0.1",
"description": "docker-express",
"main": "app.js",
"author": "w",
"license": "MIT",
"devDependencies":{
"express":"^4.16.0"
}
}
最后编写Dockerfile文件
Dockerfile
FROM node
LABEL maintainer="w"
RUN mkdir /app
COPY app.js /app/app.js
COPY package.json /app/package.json
WORKDIR /app
RUN npm installEXPOSE 3000
CMD ["node","app.js"]
然后运行docker build -t express .
build出image之后docker run -d --name express -p 3000:3000 express运行,在浏览器中运行http://127.0.0.1:8080就可以看到结果了。
-d:后台以daemon进程运行;
-p:将本地端口映射到容器內的端口;
******* 如果不写package.json文件,直接在Dockerfile中添加一句RUN npm install express --save 在build成image之后,run起来会出现问题在浏览器中访问不到。*********