目录结构
├─ .dockerignore├─ app.js├─ Dockerfile├─ package.json└─ process.yml
1 初始化项目
mkdir demo && cd demo
npm init -y
npm i koa -s
package.json
{
"private": true,
"name": "myappp",
"version": "1.0.0",
"main": "app.js",
"license": "ISC",
"description": "myappp",
"dependencies": {
"koa": "^2.7.0"
}
}
2 添加程序入口
//app.js
const Koa = require("koa");
const app = new Koa();
app.use((ctx) => {
ctx.body = "Hello Docker";
});
app.listen(3000, () => {
console.log("app started at http://localhost:3000/");
});
3 添加Dockerfile配置
3.1 Dockerfile
# Dockerfile
FROM keymetrics/pm2:latest-alpine
ADD . /usr/src/app
WORKDIR /usr/src/app
RUN npm config set registry https://registry.npm.taobao.org/ && \
npm i
EXPOSE 3000
# pm2在docker中使用命令为pm2-docker
CMD ["pm2-runtime", "start", "process.yml"]
3.2 .dockerignore
# .dockerignore
node_modules
4 添加 process.yml
# process.yml
apps:
- script: app.js
instances: 2
watch: true
env:
NODE_ENV: production
5 生成镜像
# 定制镜像
docker build -t mypm2 .
# 运行
docker run -p 3000:3000 -d mypm2

