node方式运行
-
创建DockerFile
FROM node:14.15.1-alpine # 创建容器内的项目存放目录 RUN mkdir -p /home/nodeapp WORKDIR /home/nodeapp COPY . /home/nodeapp #COPY .nuxt /home/nodeapp #COPY static /home/nodeapp #COPY nuxt.config.js /home/nodeapp #COPY package.json /home/nodeapp #COPY ecosystem.config.js /home/nodeapp #COPY serverconfig.js /home/nodeapp #COPY pm2.json /home/nodeapp RUN cd /home/nodeapp RUN chmod -R 777 * RUN npm install --registry=https://registry.npm.taobao.org RUN npm run build:test RUN ls -l -a # 容器对外暴露的端口号,要和node项目配置的端口号一致 EXPOSE 8000 # 容器启动时执行的命令 CMD ["sh", "-c", "npm run start:$APP_ENV"] # npm run start:$APP_ENV
pm2方式运行
-
创建pm2.json或ecossystem.config.js
{ "name": "tech-site", "exec_mode": "cluster", "instances": "max", "script": "./node_modules/nuxt/bin/nuxt.js", "args": "start", "env": { "NODE_ENV": "prod", "VUE_APP_TITLE": "prod" }, "env_dev": { "NODE_ENV": "dev", "VUE_APP_TITLE": "dev" }, "env_test": { "NODE_ENV": "dev", "VUE_APP_TITLE": "test" }, "env_prod": { "NODE_ENV": "prod", "VUE_APP_TITLE": "prod" } } -
创建一个执行的sh文件(pm2.sh)
#!/bin/sh pm2 start pm2.json --env $APP_ENV #启动pm2,$APP_ENV:docker运行时候传入的参数 pm2 logs -
DockerFile
FROM node:14.15.1-alpine # 创建容器内的项目存放目录 RUN mkdir -p /home/nodeapp # 设置工作目录 WORKDIR /home/nodeapp # 将代码复制到容器中 COPY . /home/nodeapp RUN cd /home/nodeapp # 添加权限,防止依赖无法安装 RUN chmod -R 777 * # 添加执行shell文件权限 RUN chmod u+x pm2.sh RUN npm install --registry=https://registry.npm.taobao.org RUN npm i pm2 -g --registry=https://registry.npm.taobao.org RUN npm run build:test RUN ls -l -a # 容器对外暴露的端口号,要和node项目配置的端口号一致 EXPOSE 8000 # 通过shell文件来执行多条命令 CMD ["./pm2.sh"] -
构建镜像
docke build -t nuxt:pm2 . -
运行容器
docker run -d -p -e APP_ENV=test 3200:8000 nuxt:pm2
\