公司要求服务都以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