流程图
nuxt Dockerfile
FROM node:lts-alpine
LABEL Author=echo
ENV HOST=0.0.0.0
RUN mkdir -p /app
COPY . /app
WORKDIR /app
EXPOSE 22322
RUN yarn config set registry https://registry.npm.taobao.org/
RUN yarn install
RUN yarn run build
CMD ["yarn" , "start" ]
2 Jenkins配置
Build
Execute shell
#!/bin/bash
docker login -u -p [harbor地址]
IMAGE_NAME="[镜像名]:$[$(date +%s%N) /1000000]"
echo $IMAGE_NAME
docker build --pull --rm -f "Dockerfile" -t $IMAGE_NAME "."
echo "==========Docker image构建完成=========="
docker push $IMAGE_NAME
echo "==========Docker image推送完成=========="
docker image rm $IMAGE_NAME
echo "==========Docker image删除成功=========="
Execute shell script on remote host using ssh
#!/bin/bash
docker login -u -p [harbor地址]
IMAGE_NAME="[镜像名]"
IMAGE_TAG=$(curl -u [harbor账号:密码] -X GET "http://[harbor地址]/api/v2.0/projects/vertex/repositories/vertex-web/artifacts?page=1&page_size=1&with_tag=true&with_label=false&with_scan_overview=false&with_signature=false&with_immutable_status=false" -H "accept: application/json" | sed 's/,/\n/g' | grep "name" | awk -F ':' '{print $2}' | sed 's/"//g' )
CONTAINER_ID=`docker ps | grep [docker name] | awk '{print $1}' `
echo $CONTAINER_ID
if [ -n "$CONTAINER_ID " ]
then
docker rm -f $CONTAINER_ID
fi
IMAGE_ID=`docker images | grep "vertex-web" | awk '{print $3}' `
if [ -n "$IMAGE_ID " ]
then
docker image rm $IMAGE_ID
fi
docker run --rm -p 22322:22322 -d --name [docker name] $IMAGE_NAME :$IMAGE_TAG