使用 Dockerfile 构建镜像,用镜像创建容器进行部署。

构建镜像

  1. # 指定基础镜像
  2. FROM node:10.15.0-alpine
  3. # 移动当前目录到 app 目录下
  4. ADD . /app
  5. # 指定工作目录
  6. WORKDIR /app
  7. # 设置时区
  8. RUN apk add --no-cache tzdata
  9. ENV TZ Asia/Shanghai
  10. # bash
  11. RUN apk add --no-cache bash
  12. # git
  13. RUN apk add --no-cache git
  14. # set npm registry
  15. RUN npm config set registry https://registry.npm.taobao.org/
  16. # 安装依赖
  17. RUN npm i
  18. # 构建
  19. RUN npm run build
  20. # 对外暴露端口
  21. # 注意 sdp 上部署时,端口必须为 8080
  22. EXPOSE 8080
  23. # 启动
  24. CMD npm run start:prod

使用上面的 Dockerfile 构建镜像

  1. # 进入项目根目录
  2. cd bound
  3. # 打包镜像
  4. # 工程院规则 registry.101.com/{appid}/{appName}:{version}
  5. # 会根据appId将镜像作为部署时的可选项
  6. # 使用 --network host 指定本地网络代理 防止网络异常
  7. docker build --network host -t registry.101.com/{appid}/{appName}:{version} .

上传镜像

  1. # 登陆工程院私有仓库(工号)
  2. docker login registry.101.com
  3. # 推送镜像
  4. docker push registry.101.com/{appid}/{appName}:{version}

部署

进入应用内,同步自定义镜像
image.png
进入对应的环境,如开发、测试等进行发布。

如果需要配置环境变量 (比如数据库参数等),可以点击配置按钮,进入高级设置面板内设置。
image.png

点击快速发布按钮,选择构建好的景象发布。
image.png
注意:非生产环境点击发布后会直接发布,不会再次确认,请谨慎选择!

更新dockerfile

  1. FROM node:12.20.0-alpine
  2. # 切换 alpine apk 源
  3. RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
  4. RUN apk add shadow
  5. RUN apk add iproute2
  6. # 设置时区
  7. RUN apk add tzdata
  8. ENV TZ Asia/Shanghai
  9. # bash
  10. RUN apk add bash
  11. # git
  12. RUN apk add git
  13. # set npm registry
  14. # RUN npm config set registry https://registry.npm.taobao.org/
  15. RUN npm config set registry http://registry.npm.sdp.nd/
  16. RUN npm i -g pm2
  17. RUN mkdir -p /home/docker && groupadd -r docker && useradd -r -g docker -d /home/docker -u 8080 docker
  18. WORKDIR /home/docker
  19. # 移动当前目录到 app 目录下
  20. # 这一步必须在下面的权限处理之前做,否则后移入的文件会没有权限
  21. ADD . /home/docker/app
  22. RUN chown -R docker:docker /home/docker
  23. # 权限
  24. RUN chmod 777 -R /home/docker
  25. # 指定工作目录
  26. WORKDIR /home/docker/app
  27. # 安装依赖
  28. RUN yarn
  29. RUN yarn build
  30. # 对外暴露端口
  31. EXPOSE 8080
  32. USER docker
  33. # 启动
  34. # CMD npm run pm2:start
  35. CMD ["pm2-runtime", "pm2.config.js"]