使用 Dockerfile 构建镜像,用镜像创建容器进行部署。
构建镜像
# 指定基础镜像
FROM node:10.15.0-alpine
# 移动当前目录到 app 目录下
ADD . /app
# 指定工作目录
WORKDIR /app
# 设置时区
RUN apk add --no-cache tzdata
ENV TZ Asia/Shanghai
# bash
RUN apk add --no-cache bash
# git
RUN apk add --no-cache git
# set npm registry
RUN npm config set registry https://registry.npm.taobao.org/
# 安装依赖
RUN npm i
# 构建
RUN npm run build
# 对外暴露端口
# 注意 sdp 上部署时,端口必须为 8080
EXPOSE 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/repositories
RUN apk add shadow
RUN apk add iproute2
# 设置时区
RUN apk add tzdata
ENV TZ Asia/Shanghai
# bash
RUN apk add bash
# git
RUN 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 pm2
RUN mkdir -p /home/docker && groupadd -r docker && useradd -r -g docker -d /home/docker -u 8080 docker
WORKDIR /home/docker
# 移动当前目录到 app 目录下
# 这一步必须在下面的权限处理之前做,否则后移入的文件会没有权限
ADD . /home/docker/app
RUN chown -R docker:docker /home/docker
# 权限
RUN chmod 777 -R /home/docker
# 指定工作目录
WORKDIR /home/docker/app
# 安装依赖
RUN yarn
RUN yarn build
# 对外暴露端口
EXPOSE 8080
USER docker
# 启动
# CMD npm run pm2:start
CMD ["pm2-runtime", "pm2.config.js"]