zoukankan      html  css  js  c++  java
  • docker 运行jenkins及vue项目与springboot项目(五.jenkins打包springboot服务且在docker中运行)

    docker 运行jenkins及vue项目与springboot项目:

    1.立即构建

    输入任务名称:service_blog
    选择maven项目(先要在插件管理中安装maven插件)

    2.配置
    源码管理

    选择git(先要在插件管理中安装git插件)
    输入git地址、秘钥及需要打包的分支

    Pre Steps

    Build: pom.xml,输入maven命令clean package
    Post Steps:add post-build step->选择执行shell
    输入shell命令:

    #!/bin/bash
    				
    #下面的路径都是指jenkins容器中的路径,非宿主机服务器的路径(通过该命令进入容器查看:docker exec -it {jenkins容器id} /bin/bash)
    #操作/项目路径(Dockerfile[下附配置]存放的路径)
    BASE_PATH=/var/jenkins_home/service
    # 源jar路径(jenkins利用maven打包项目的jar包的路径,其service_blog则为构建时输入的任务名称)
    SOURCE_PATH=/var/jenkins_home/workspace/service_blog/target
    #docker 镜像/容器名字 这里都命名为这个(自定义)
    SERVER_NAME=service-blog
    #jar名字(jenkins利用maven打包项目的jar包名称)
    JAR_NAME=personal_blog-0.0.1-SNAPSHOT
    #容器id
    CID=$(docker ps -a | grep "$SERVER_NAME" | awk '{print $1}')
    #镜像id
    IID=$(docker images -a | grep "$SERVER_NAME" | awk '{print $3}')
     
    DATE=`date +%Y%m%d%H%M`
     
    # 最新构建代码 移动到项目环境
    function transfer(){
    	echo "最新构建代码 $SOURCE_PATH/$JAR_NAME.jar 迁移至 $BASE_PATH ...."
    		cp $SOURCE_PATH/$JAR_NAME.jar $BASE_PATH/
    	echo "迁移完成"
    }
     
    # 备份
    function backup(){
    	if [ -f "$BASE_PATH/$JAR_NAME.jar" ]; then
    		echo "$JAR_NAME.jar 备份..."
    			cp $BASE_PATH/$JAR_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
    		echo "备份 $JAR_NAME.jar 完成"
    	else
    		echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
    	fi
    }
     
    # 构建docker镜像
    function build(){
    	if [ -n "$IID" ]; then
    		echo "存在$SERVER_NAME镜像,IID=$IID,删除后重新构建"
    		docker rmi $IID
    		echo "删除完毕,开始构建镜像"
    		cd $BASE_PATH
    		docker build -t $SERVER_NAME .
    	else
    		echo "不存在$SERVER_NAME镜像,开始构建镜像"
    			cd $BASE_PATH
    		docker build -t $SERVER_NAME .
    	fi
    }
     
    # 运行docker容器
    function run(){
    	echo "执行backup ..."
    	backup
    	echo "执行transfer ..."
    	transfer
    	echo "执行build ..."
    	build
    	echo "docker run ..."
    	if [ -n "$CID" ]; then
    		echo "存在$SERVER_NAME容器,CID=$CID,停止后 删除,重新创建启动"
    			docker stop $CID
    			docker rm  $CID
    			docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8089:8089 $SERVER_NAME
    		echo "$SERVER_NAME容器重启完成"
    	else
    		echo "不存在$SERVER_NAME容器,docker run创建容器..."
    			docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8089:8089 $SERVER_NAME
    		echo "$SERVER_NAME容器创建完成"
    	fi
    }
     
    #入口
    run    
    

    springboot项目的Dockerfile配置:

    #基于openjdk:8
    FROM openjdk:8
     
    # 指定当前操作目录
    WORKDIR /var/jenkins_home/service
     
    ADD  personal_blog-0.0.1-SNAPSHOT.jar personal_blog.jar
    RUN bash -c 'touch /personal_blog.jar'
    ENTRYPOINT ["java","-Djava.security.egd-file:/dev/./urandom","-jar","-Xmx1024m","-Xms1024m","/personal_blog.jar"]
    

    保存配置

    3.立即构建

    查看控制台,看看是否有错误,最后是否success
    查看springboot应用的日志,看看是否启动成功,是否有错误:docker logs -f --tail=100 {容器id}

    4.出现权限问题

    Got permission denied while trying to connect to the Docker daemon socket
    在容器所在的宿主机上直接给 docker.sock 777权限,命令 chmod 777 docker.sock

  • 相关阅读:
    c学习第6天
    c学习第5天
    c学习第4天
    c学习第1天
    20171009/20171010/20171011
    20171010
    20171008
    20171007
    20171006
    matrix
  • 原文地址:https://www.cnblogs.com/lantuanqing/p/12073326.html
Copyright © 2011-2022 走看看