Jenkins+Docker部署Maven聚合工程


這幾天,把公司的預發布環境,改成docker部署,遇到了一些坑,有jenkins里的部署腳本的問題,也有harbor倉庫的問題,還有docker遠程訪問的問題,還有DooD....一堆坑
在這里插入圖片描述

Jenkins里,沒有直接安裝在Centos7上,是用的docker安裝的jenkins

1.安裝Docker

這個就簡單了,隨便都可以搜到,這里只是貼我安裝的命令

# 卸載舊版本
sudo yum remove docker docker-client  docker-client-latest  docker-common  docker-latest  docker-latest-logrotate  docker-logrotate  docker-selinux  docker-engine-selinux  docker-engine
                  
# 安裝
sudo yum install -y yum-utils  device-mapper-persistent-data  lvm2
           
# 添加yum源
sudo yum-config-manager --add-repo  https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
    
# 安裝
yum makecache fast
yum -y install docker-ce

啟動
systemctl enable docker
systemctl start docker

2.安裝Docker版本的Jenkins

先這樣安裝,在用Jenkins打鏡像包的時候,就會有DooD的問題

docker run -d \
	-v /var/run/docker.sock:/var/run/docker.sock \
	-v $(which docker):/usr/bin/docker 
	-p 8080:8080 \
	jenkins
  • 第2行是將宿主機的/var/run/docker.sock映射到容器中,這樣在容器中運行的docker命令,就會在宿主機上來執行。
  • 第3行是將宿主機的docker程序映射進容器中,這樣本身沒有安裝docker的jenkins容器就可以執行docker命令了(事實上容器里是沒有運行docker的服務的,我們只是用這個映射進容器的docker來作為客戶端發送docker的指令到/var/run/docker.sock而已,兒/var/run/docker.sock已經被鏈接到宿主機了)

訪問:http://localhost:8080,安裝插件,設置管理員密碼

3.介紹項目的目錄,以及寫Dockerfile

1.這里是用的是Maven的聚合工程

在這里插入圖片描述

2.Dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD admin-server-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

admin-server-0.0.1-SNAPSHOT.jar就是,maven打完包的包名

3.Maven的pom.xml配置

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <imageName>springboot/${project.artifactId}</imageName>
        <dockerDirectory>src/main/docker</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>
  • imageName打的鏡像名稱,這里的鏡像名稱是:springboot/admin-server
  • dockerDirectory指定docker文件夾的位置

4.新建Jenkins配置

配置Git倉庫
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

  • 這個是讓公司的運維寫的腳本,在構建完成之后,把已經運行的容器
    • docker stop admin-server 停止
    • docker rm admin-server 然后再刪除

然后再運行

  • -p 指定端口
  • -e "SPRING_PROFILES_ACTIVE=prerelease" ,可以看成是啟動jar的時候的,java -jar admin-server.jar --spring.profiles.active=prerelease ,指定運行環境
  • -- name 容器別名

5.出現的問題

如果docker run jenkins 沒有指定

-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker 

這里就不能打包,就是因為在jenkins里的容器中,沒有安裝對象,使用了-v ,就是把jenkins里所需要的docker映射到宿主docker中

6.小結

這里只是在Centos7的一台服務器里,安裝了docker,運行了jenkins容器,在jenkins容器中,打包鏡像,然后再同一台服務器中運行,使用生產中,並不會用這樣的方式,下一篇就寫使用harbor倉庫,安裝倉庫也是很簡單,只是在docker與docker,docker與倉庫之間的通信需要https請求,遇到的問題

7.參考的博客

1.解決是DooD的問題:http://www.up4dev.com/2018/11/27/run-docker-by-jenkins-in-docker/
2.更多可訪問我的博客:https://yanganlin.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM