美文网首页程序员
Docker容器中运行Jenkins实现前端自动化部署

Docker容器中运行Jenkins实现前端自动化部署

作者: 嘻哈章鱼小丸子 | 来源:发表于2021-01-13 17:04 被阅读0次

    拿公司已经配置好的jenkins做个示例和理解,起码懂个大概吧。

    1. 必要的插件

    公司的代码库是 gitlab,所以gitlab 插件少不了。需要在线安装,肯定少不了nodejs的呀。

    gitlab
    nodejs
    2. 新建项目
    freestyle project
    3. 项目配置
    源码管理
    构建环境
    主目录
    构建命令
    sudo npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
    npm install --unsafe-perm node-sass
    npm install 
    npm run build
    
    PROJECT_NAME=test-dev
    //进入项目目录
    cd /home/$PROJECT_NAME
    //删除目录下的dist 压缩包
    rm -rf dist.tgz
    //压缩项目下的dist目录为dist压缩包(备份)
    tar -cvf dist.tgz ./dist/*
    //删除项目下的dist目录
    rm -rf ./dist
    //将新build的dist目录拷贝到项目下(/home/jenkins/.jenkins 是jenkins主目录,见上图)
    cp -r /home/jenkins/.jenkins/workspace/$PROJECT_NAME/dist /home/$PROJECT_NAME
    //将Dockerfile 配置拷贝到项目下
    cp  /home/jenkins/.jenkins/workspace/$PROJECT_NAME/docker/Dockerfile /home/$PROJECT_NAME/
    
    str1="$PROJECT_NAME"
    //根据名称查询容器
    str2=$(docker ps -a|grep "$PROJECT_NAME"|awk '{print $2}')
    //非空
    if [ -n "$str2" ]
    then
      //删除该容器
      docker rm -f $str1  
    fi
    //查询镜像ID
    str=$(docker images|grep "/test/$PROJECT_NAME"|awk '{print $3}')
    
    if [ -n "$str" ]; 
    then
       //移除镜像
       docker images|grep "/test/$PROJECT_NAME"|awk '{print $3 }'|xargs docker rmi -f
    fi
    //创建镜像
    docker build -t $PROJECT_NAME .
    //生成镜像的同名容器,容器的80端口映射到访问的8093端口(80端口是nginx默认的端口号),把nginx.conf挂载到容器的/etc/nginx/nginx.conf(/etc/nginx/nginx.conf是nginx默认的配置文件)
    docker run -d --name $PROJECT_NAME -p 8093:80 -v /home/$PROJECT_NAME/nginx.conf:/etc/nginx/nginx.conf $PROJECT_NAME:latest 
    
    SERVER_NAME=$PROJECT_NAME:latest
    DATE=`date +%Y%m%d%H%M`
    echo "push镜像到docker镜像仓库"
    //打上tag
    docker tag $SERVER_NAME ip:port/test/$PROJECT_NAME:$DATE
    docker push ip:port/test/$PROJECT_NAME:$DATE
    echo "成功push镜像到docker镜像仓库"
    
    附录:镜像和容器的关系

    简单点说,镜像就类似操作系统光盘介质,容器相当于通过光盘安装后的系统。通过光盘(镜像),我们能在不同机器上部署系统(容器),系统内的操作只会保留在当前的系统(容器)中,如果要升级系统,需要使用到光盘,但是可能会导致操作系统的数据丢失。

    摘自:Docker的镜像和容器的区别

    相关文章

      网友评论

        本文标题:Docker容器中运行Jenkins实现前端自动化部署

        本文链接:https://www.haomeiwen.com/subject/aahuaktx.html