使用 Dockerfile 构建镜像,用镜像创建容器进行部署。
构建镜像
# 指定基础镜像FROM node:10.15.0-alpine# 移动当前目录到 app 目录下ADD . /app# 指定工作目录WORKDIR /app# 设置时区RUN apk add --no-cache tzdataENV TZ Asia/Shanghai# bashRUN apk add --no-cache bash# gitRUN apk add --no-cache git# set npm registryRUN npm config set registry https://registry.npm.taobao.org/# 安装依赖RUN npm i# 构建RUN npm run build# 对外暴露端口# 注意 sdp 上部署时,端口必须为 8080EXPOSE 8080# 启动CMD npm run start:prod
使用上面的 Dockerfile 构建镜像
# 进入项目根目录cd bound# 打包镜像# 工程院规则 registry.101.com/{appid}/{appName}:{version}# 会根据appId将镜像作为部署时的可选项# 使用 --network host 指定本地网络代理 防止网络异常docker build --network host -t registry.101.com/{appid}/{appName}:{version} .
上传镜像
# 登陆工程院私有仓库(工号)docker login registry.101.com# 推送镜像docker push registry.101.com/{appid}/{appName}:{version}
部署
进入应用内,同步自定义镜像
进入对应的环境,如开发、测试等进行发布。
如果需要配置环境变量 (比如数据库参数等),可以点击配置按钮,进入高级设置面板内设置。
点击快速发布按钮,选择构建好的景象发布。
注意:非生产环境点击发布后会直接发布,不会再次确认,请谨慎选择!
更新dockerfile
FROM node:12.20.0-alpine# 切换 alpine apk 源RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositoriesRUN apk add shadowRUN apk add iproute2# 设置时区RUN apk add tzdataENV TZ Asia/Shanghai# bashRUN apk add bash# gitRUN apk add git# set npm registry# RUN npm config set registry https://registry.npm.taobao.org/RUN npm config set registry http://registry.npm.sdp.nd/RUN npm i -g pm2RUN mkdir -p /home/docker && groupadd -r docker && useradd -r -g docker -d /home/docker -u 8080 dockerWORKDIR /home/docker# 移动当前目录到 app 目录下# 这一步必须在下面的权限处理之前做,否则后移入的文件会没有权限ADD . /home/docker/appRUN chown -R docker:docker /home/docker# 权限RUN chmod 777 -R /home/docker# 指定工作目录WORKDIR /home/docker/app# 安装依赖RUN yarnRUN yarn build# 对外暴露端口EXPOSE 8080USER docker# 启动# CMD npm run pm2:startCMD ["pm2-runtime", "pm2.config.js"]
