docker启动node项目

8 min read

在本地myapp文件夹下配置几个文件

//app.js
const koa = require("koa");
const app = new koa();
const router = require("koa-router")();
router.get("/",async ctx=>{
    ctx.body = {
        code:200,
        msg:"hello aliyun"
    }
})
app.use(router.routes())
app.listen(8080);
//package.json
{
  "name": "data",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "koa": "^2.13.1",
    "koa-router": "^10.0.0"
  }
}
//Dockerfile 使用这个文件构建一个镜像
# 引入Node
FROM node:latest
# 在容器内创建工作目录
RUN mkdir -p /app   
# 指定容器工作目录  
WORKDIR /app   
#将当前目录下的所有文件,都拷贝进入 image 文件的/app目录。
COPY . /app
RUN npm install --registry=https://registry.npm.taobao.org    
RUN npm install pm2 -g --registry=https://registry.npm.taobao.org 
#对外暴露的端口   
EXPOSE 8080
#程序启动脚本
CMD ["pm2-runtime", "app.js"] 

2 Linux上构建镜像

在Dockerfile同级路径下执行如下命令构建镜像

docker build -t myapp .

3 启动容器

docker run -d -p 8082:8080 --name myapp  myapp 
1.使用myapp这个镜像去启动一个容器
2.主机器的8080端口映射到8080,8080端口也就是我们的Dockerfile对外暴露的接口。
3.-d表示后台运行。-p表示指定端口映射
docker stop xxx //停止容器
docker rm xxx //删除容器