Jenkins-docker 安装和配置

Jenkins 环境配置
## maven 安装
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -xzvf apache-maven-3.6.3-bin.tar.gz
配置 setting.xml
配置环境变量
vi /etc/profile
export M2_HOME=/mydata/maven3.6.3
export PATH=$PATH:${M2_HOME}/bin
环境变量生效
source /etc/profile

## 进入容器 
 docker exec -it jenkins /bin/bash
 
## 来查看 java 路径在:/usr/local/openjdk-8
echo $JAVA_HOME

## 来查看 git 路径 :/usr/bin/git
which git
Jenkins 安装
## 下载
docker pull jenkins/jenkins:lts

## 启动
docker run -p 8080:8080 -p 50000:5000 --name jenkins \
-u root \
-v /mydata/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
-v /etc/localtime:/etc/localtime \
-v /mydata/maven3.6.3:/usr/local/maven \
-v /mydata/maven_respository:/mydata/maven_respository \
-d jenkins/jenkins:lts

## 访问:
http://192.168.111.131:8080/

## jenkins 重启
http://192.168.111.131:8080/restart

## 下命令从容器启动日志中获取管理密码
docker logs jenkins

Jenkins 安装:https://juejin.cn/post/6844904022097264648


/mydata/jenkins_home:/var/jenkins_home 把Jenkins文件存放到宿主机上
/var/run/docker.sock:/var/run/docker.sock : Jenkins 能通过主机的 Docker 守护进程(也就是 Docker Engine)来操作 docker 容器
-v $(which docker):/usr/bin/docker : 这个是将外部的docker 挂载到 jenkins 容器内部,以便其能使用 docker 命令
-v /etc/localtime:/etc/localtime 时间同步
/mydata/maven3.6.3:/usr/local/maven 宿主机的Maven挂到容器中(宿主机先安装maven)
/mydata/maven_respository:/mydata/maven_respository : maven依赖下载到宿主机上
-v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置
-v /etc/localtime:/etc/localtime \

Jenkins 配置
  1. 安装插件

    • 根据角色管理权限的插件:Role-based Authorization Strategy
    • 远程使用ssh的插件:SSH plugin
  2. 配置账号
    在这里插入图片描述
    在这里插入图片描述

  3. 系统配置
    在这里插入图片描述
    在这里插入图片描述

  4. 全局工具配置 jdk、git、maven
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Jenkins 项目配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式一:通过部署机器上的脚本启动项目打包的镜像
在这里插入图片描述
方式二:通过Jenkins 配置 Shell的脚本启动项目镜像(也就是脚本中的内容)
在这里插入图片描述

脚本内容

#!/usr/bin/env bash
app_name='mall-tiny-jenkins'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker run -p 8088:8088 -p 9999:9999 --name ${app_name} \
--link mysql:db \
-v /etc/localtime:/etc/localtime \
-v /sda3/mydata/app/${app_name}/logs:/var/logs \
-d --network docker-network  mall-tiny/${app_name}:1.0-SNAPSHOT  \
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999
echo '----start container----'
  • 创建网路
    # docker-network是局域网的名字,自定义 
    docker network create docker-network  
    
  • --network docker-network mall-tiny-jenkins加入到 docker-network 网络中
  • -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999 开启远程debug功能,端口 9999,
  • idea 配置
    在这里插入图片描述
Jenkins 构建日志
Started by upstream project "gitee-mall-tiny-jenkins" build number 10
originally caused by:
 Started by user admin
Running as SYSTEM

## 项目下载的目录
Building in workspace /var/jenkins_home/workspace/gitee-mall-tiny-jenkins/default

[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Deferred wipeout is used...
The recommended git tool is: NONE
using credential gitee
Cloning the remote Git repository

## 从 gitee上克隆项目
Cloning repository https://gitee.com/ZJB2020/mall-tiny-jenkins.git

 > /usr/bin/git init /var/jenkins_home/workspace/gitee-mall-tiny-jenkins/default # timeout=10
Fetching upstream changes from https://gitee.com/ZJB2020/mall-tiny-jenkins.git
 > /usr/bin/git --version # timeout=10
 > git --version # 'git version 2.11.0'
using GIT_ASKPASS to set credentials gitee
 > /usr/bin/git fetch --tags --progress -- https://gitee.com/ZJB2020/mall-tiny-jenkins.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > /usr/bin/git config remote.origin.url https://gitee.com/ZJB2020/mall-tiny-jenkins.git # timeout=10
 > /usr/bin/git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
Checking out Revision 85c47307d00b7e85df695dfa288897845fec4e98 (refs/remotes/origin/master)
 > /usr/bin/git config core.sparsecheckout # timeout=10
 > /usr/bin/git checkout -f 85c47307d00b7e85df695dfa288897845fec4e98 # timeout=10
Commit message: "init"
 > /usr/bin/git rev-list --no-walk 85c47307d00b7e85df695dfa288897845fec4e98 # timeout=10

## maven 依赖下载
[default] $ /usr/local/maven/bin/mvn -f pom.xml clean package

[INFO] Scanning for projects...
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/springframework/boot/spring-boot-starter-parent/2.1.3.RELEASE/spring-boot-starter-parent-2.1.3.RELEASE.pom
Progress (1): 4.1/12 kB
Progress (1): 7.8/12 kB
Progress (1): 12/12 kB 
Progress (1): 12 kB   

.........
[INFO] --- docker-maven-plugin:1.1.0:build (build-image) @ mall-tiny-jenkins ---
[INFO] Using authentication suppliers: [ConfigFileRegistryAuthSupplier]
[INFO] Copying /var/jenkins_home/workspace/gitee-mall-tiny-jenkins/default/target/mall-tiny-jenkins-1.0-SNAPSHOT.jar -> /var/jenkins_home/workspace/gitee-mall-tiny-jenkins/default/target/docker/mall-tiny-jenkins-1.0-SNAPSHOT.jar

## 构建 mall-tiny/mall-tiny-jenkins:1.0-SNAPSHOT 镜像
[INFO] Building image mall-tiny/mall-tiny-jenkins:1.0-SNAPSHOT
Step 1/3 : FROM java:8

 ---> d23bdf5b1b1b
Step 2/3 : ADD /mall-tiny-jenkins-1.0-SNAPSHOT.jar //

 ---> afa47f52cf58
Step 3/3 : ENTRYPOINT ["java", "-jar","/mall-tiny-jenkins-1.0-SNAPSHOT.jar"]

 ---> Running in 9f94e338f038
Removing intermediate container 9f94e338f038
 ---> 68e3706b769e
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 68e3706b769e
Successfully tagged mall-tiny/mall-tiny-jenkins:1.0-SNAPSHOT
[INFO] Built mall-tiny/mall-tiny-jenkins:1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  31.317 s
[INFO] Finished at: 2020-12-19T14:57:34Z
[INFO] ------------------------------------------------------------------------

## 执行Jenkins 脚本
[SSH] script:

/mydata/sh/mall-tiny-jenkins.sh

[SSH] executing...
docker: Error response from daemon: Cannot link to /mysql, as it does not belong to the default network.
mall-tiny-jenkins
----stop container----
mall-tiny-jenkins
----rm container----
81d994fbba610109f07c6ab2a36808040ca7ee7c9e7f10f7b2572371803f40a9
----start container----

[SSH] completed
[SSH] exit-status: 0

Finished: SUCCESS

Cannot link to /mysql, as it does not belong to the default mysql 没有启动

手动启动项目并访问地址
  • docker 启动mysql

    docker run -p 3306:3306 --name mysql \
    > -v /mydata/mysql/log:/var/log/mysql \
    > -v /mydata/mysql/data:/var/lib/mysql \
    > -v /mydata/mysql/conf:/etc/mysql \
    > -e MYSQL_ROOT_PASSWORD=root  \
    > -d --network docker-network mysql:5.7
    

    查看已有的network
    docker network ls
    手动链接外部网络(通过 --network docker-network 或下面的方式都可以)
    docker network connect docker-network mysql

  • docker 启动项目

    docker run -p 8088:8088 --name mall-tiny-jenkins \
    --link mysql:db \
    -v /etc/localtime:/etc/localtime \
    -v /mydata/app/mall-tiny-jenkins/logs:/var/logs \
    -d mall-tiny/mall-tiny-jenkins:1.0-SNAPSHOT
    
  • 访问地址
    http://192.168.111.131:8088/swagger-ui.html

项目docker-maven-plugin配置
  <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <skipTests>true</skipTests>
        <dockerHost>http://192.168.111.131:2375</dockerHost>
        <docker.registryUrl>192.168.111.131:5000</docker.registryUrl>
    </properties>

           <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.1.0</version>
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <imageName>mall-tiny/${project.artifactId}:${project.version}</imageName>
                    <!--<imageName>${docker.registryUrl}/mall-tiny/${project.artifactId}:${project.version}					  </imageName>-->
                    <dockerHost>${dockerHost}</dockerHost>
                    <baseImage>java:8</baseImage>
 					 <env>
                        <JAVA_OPTS>"-Xms512m -Xmx512m"</JAVA_OPTS>
                    </env>
                    <!-- shell 格式的 ENTRYPOINT,docker容器启动时执行的命令-->
                    <entryPoint>
                        ["/bin/sh", "-c","java $JAVA_OPTS -jar -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=prod $0 $@ /${project.build.finalName}.jar"]
                    </entryPoint>
                    
                    <!--<pushImage>true</pushImage>-->
                    <!--<registryUrl>${docker.registryUrl}</registryUrl>-->

                    <!--这里是复制 jar 包到 docker 容器指定目录配置-->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值