前端的docker简单实战

999 阅读1分钟

公司要求服务都以docker形式部署,虽然我的页面大部分都是静态页面,但是这次用nuxt做的ssr就是一个服务,所以也需要docker部署,研究了一番,总结一下。

第一步,安装pm2

PM2这个神器不多说了,总之不装就等着服务老关吧,还找不到原因。

npm i pm2 -g
pm2 init

运行完成后,会在项目下生成一个ecosystem.config.js,这个是pm2的配置文件。

module.exports = {
  apps : [{
    name: 'pc_ssr',
    script: 'npm start', //主要改这里,这里是启动服务的命令

    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    args: 'one two',
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'production'
    },
    env_production: {
      NODE_ENV: 'production'
    }
  }]
};

第二步,编写Dockerfile

dockerfile相当于docker的配置文件,当前这份文件基本就可以部署nuxt了,如果是其他静态页面,建议加上nginx. 参考了 PM2 的官方文档

FROM  keymetrics/pm2:latest-alpine
ENV NODE_ENV=production
ENV HOST 0.0.0.0 

WORKDIR /usr/src/app
COPY . .

ENV NPM_CONFIG_LOGLEVEL warn
RUN npm install
RUN npm run build
EXPOSE 3000
CMD [ "pm2-runtime", "start", "ecosystem.config.js" ]

第三步,部署

首先服务器需要安装docker环境,这个不用我说了吧。
如果把文件上传到服务器,也不用我说了吧! pc_ssr是我的项目名,你可以自己替换

//生成映像
sudo docker build -t pc_ssr.
//运行这个映像
sudo  docker run -p 8085:3000 -d --restart=always  pc_ssr