欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker整合jenkins实现自动部署

程序员文章站 2024-03-19 08:08:10
...

docker整合jenkins

docker安装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 \
-d jenkins/jenkins:lts
  • 出现下面问题
    docker整合jenkins实现自动部署
# 查找文件
find / -name 'hudson.model.UpdateCenter.xml'
# 进行修改
vi hudson.model.UpdateCenter.xml
# 将<url>https://updates.jenkins.io/update-center.json</url>替换
# 更改为国内的清华大学的镜像地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
# 或者更改为http://updates.jenkins.io/update-center.json,即去掉https中的s。
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>
# 查看容器id,重启容器
docker ps
# 找到容器id  CONTAINER ID
docker restart id
# 查看密码
docker logs jenkins
  • 访问ip:8080,根据日志的密码进入
    docker整合jenkins实现自动部署
第一次安装Jenkins时没有添加用户和密码
Jenkins在安装完成后自动跳转至网页会有引导设置添加用户名密码以及URL等
可能直接跳过了引导
不过密码是可以找到的
在Jenkins安装目录文件夹下找到secrets文件夹,点击进入
找到initialAdminPassword
右键选择Edit with Notepad++打开
里面的内容就是登录密码
复制
进入Jenkins登录界面
用户名admin
粘贴密码
登录
成功进入

项目部署到docker,jenkins构建

  1. find / -name ‘docker.service’

  2. 在ExecStart=/usr/bin/dockerd添加-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sockdocker整合jenkins实现自动部署

  3. systemctl daemon-reload //重启虚拟机;systemctl restart docker //重启docker

  4. ps -ef | grep 2375

  5. 在项目的pom.xml添加docker插件

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <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>spring/${project.artifactId}:${project.version}</imageName>
                    <!-- 配置docker地址 -->
                  	<dockerHost>http://192.168.33.10:2375</dockerHost>
                    <baseImage>java:8</baseImage>
                    <entryPoint>["java", "-jar","/${project.build.finalName}.jar"]
                    </entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
  1. 打包部署到docker上
  2. jenkins安装git、maven、ssh插件
  3. 系统管理->全局工具配置->maven->新增;系统管理->系统配置->SSH remote hosts
    docker整合jenkins实现自动部署
    docker整合jenkins实现自动部署
  4. 新建任务配置git,maven和脚本文件docker整合jenkins实现自动部署
    docker整合jenkins实现自动部署
#!/usr/bin/env bash
app_name='spring-study'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker run -p 8088:8088 --name ${app_name} \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/${app_name}/logs:/var/logs \
-d spring/${app_name}:0.0.1-SNAPSHOT


docker run -p 8088:8088 --name spring-study \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/spring-study/logs:/var/logs \
-d spring/spring-study:0.0.1-SNAPSHOT
  1. jenkins进行构建

通过natapp实现外网穿透

问题:github访问不了本机的webhook
解决:通过搭建ngrok或通过natapp注册隧道来实现外网访问