为了实现简单的ci配置,提交代码后自动编译并部署到目标服务器上,部署好gitea及jenkins后,还需要进一步处理才可将此步骤。
如用node.js中使用npm build后,于dist目录中可得纯属html代码,如用npm install http-server -g,其docker镜像颇大,高达100M,故而改用alpine配合nginx进行目标部署,基本容量可降至13M。
mkdir project cd project mkdir app mkdir nginx
将nodejs下所有项目文件放放app后, 再在nginx目录下建立一个文件defaut.conf。
server { listen 80 default_server; listen [::]:80 default_server; location / { root /app; index index.html; } }
然后在project目录下,建立一个dockerfile
FROM node:12.6.0-buster-slim AS build ENV PROJECT_ENV production EXPOSE 80 WORKDIR /app COPY ./app/ ./ RUN npm config set registry http://registry.npm.taobao.org/ RUN npm install yarn -g RUN yarn config set registry https://registry.npm.taobao.org/ RUN yarn RUN npm run build:prod COPY ./nginx /nginx FROM alpine RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories RUN apk add nginx COPY --from=build /nginx /etc/nginx/conf.d COPY --from=build /app/dist /app ENTRYPOINT ["nginx","-g","pid /tmp/nginx.pid; daemon off;"]
在jenkins中,配置好git签出后,建立部署脚本:
docker stop wm || true && docker rm wm || true docker build -t wm_image . docker run -d -p 80:80 --restart=always --name wm wm_image
Leave a Reply