Docker--Jenkins(一鍵部署)

dockerfile創(chuàng)建鏡像JDK

# mkdir -p /usr/local/dockerjdk8   創(chuàng)建文件夾 ( -p 級聯(lián)創(chuàng)建)
# 將jdk文件包上傳到剛剛創(chuàng)建的dockerjdk8目錄并解壓
# vi Dockerfile   注意:文件名是固定的     此文件必須與上傳的jdk文件同一目錄

#依賴鏡像名稱和ID ( jdk依賴于contos7   contos7也叫基礎(chǔ)鏡像)
FROM centos:7           
#指定鏡像創(chuàng)建者信息 
MAINTAINER lcchina        
#切換工作目錄 
WORKDIR /usr 
RUN mkdir  /usr/local/java 
#ADD 是相對路徑j(luò)ar,把java添加到容器中 
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ 

#配置java環(huán)境變量 
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 
ENV JRE_HOME $JAVA_HOME/jre 
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH 
ENV PATH $JAVA_HOME/bin:$PATH

執(zhí)行命令構(gòu)建鏡像

docker build -t='dockerjdk8' .       名字可以隨意起''可以省略,名字后面空格. 注意后邊的空格和點速和,不要省略

查看鏡像是否建立完成

docker images

創(chuàng)建容器

docker run -it jdk1.8 /bin/bash    

將服務(wù)通過dockerfile打成鏡像

創(chuàng)建目錄 mkdir /usr/local/server
并將打好的jar包上傳到創(chuàng)建好的server目錄下
上傳方式一:在server目錄 直接rz上傳 (推薦)
上傳方式二: Alt+P put G:\nacosspring\nacos_server\target\myapp.jar
將jar剪切到server目錄下 mv myapp.jar /usr/local/server/

創(chuàng)建 vi Dockerfile

#  from是此時要打成鏡像依賴于jdk鏡像
FROM dockerjdk8  
#  掛載目錄
VOLUME /tmp   
#  add移動到指定目錄并解壓      
ADD myapp.jar /usr/local/server/   
#  執(zhí)行 相當(dāng)于java -java app.jar
ENTRYPOINT ["java","-jar","/usr/local/server/myapp.jar"]  

執(zhí)行命令構(gòu)建鏡像

docker build -t=myapp .       名字可以隨意起''可以省略,名字后面空格. 注意后邊的空格和點憾朴,不要省略

查詢看鏡像

docker images

鏡像創(chuàng)建容器

docker run -di --name myapp -p 8012:8012 myapp

[私有倉庫搭建與配置]

私有倉庫說明圖
(1)拉取docker私有倉庫鏡像
docker pull registry
(2)創(chuàng)建私有倉庫容器并啟動
docker run -di --name=registry -p 5000:5000 registry
docker start 容器id
(3)打瀏覽器訪問地址
http://192.168.233.137:5000/v2/_catalog
(4)添加信認(rèn)在開發(fā)服務(wù)器中添加私有倉庫docker地址
vi /etc/docker/daemon.json
(5)添加以下內(nèi)容钉寝,保存退出。(開發(fā)服務(wù)中添加公有服務(wù)中的docker地址)此配置是配置兩個docker中的私有倉庫
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["192.168.233.137:5000"]
}
(6)重啟docker服務(wù)
systemctl restart docker  或   sevice docker restart

[鏡像上傳至私有倉庫 A服務(wù)上傳到B服務(wù)]

(1)將A服務(wù)中的鏡像先打標(biāo)記
docker tag dockerjdk8 192.168.233.137:5000/dockerjdk8
(2) 上傳標(biāo)記的鏡像
docker push 192.168.233.137:5000/dockerjdk8 (上傳)
docker pull 192.168.233.137:5000/dockerjdk8 (下載)

DockerMaven插件(重點)

說明:通過maven插件自動部署到私有倉庫(如果不使用maven插件其將jar包通過dockerfile轉(zhuǎn)成鏡像并打成標(biāo)記后才能上傳并中間還有一臺docker服務(wù)A--B.使用maven插件后直接打成鏡像上傳到私有倉庫.中間不需要中轉(zhuǎn)docker服務(wù))

(1)修改宿主機的docker配置舔糖,讓其可以遠(yuǎn)程訪問(此配置讓外部訪問信認(rèn))
vi /lib/systemd/system/docker.service
#其中ExecStart=后添加配置
#說明0.0.0.0表示任意地址都可以訪問但必須指定端口(端口自定義)
-H tcp://0.0.0.0:0312 -H unix:///var/run/docker.sock
(2) 刷新配置,重啟服務(wù)
systemctl daemon-reload  (重新加載)
systemctl restart docker    (重啟docker)
docker start registry   (重啟私有倉庫容器)
#如果不想麻煩 直接重啟服務(wù)器即可
reboot (重啟服務(wù)器)
(3) 在服務(wù)中工程pom.xml 增加配置
<build>
    <finalName>app</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- docker的maven插件,官網(wǎng):
        https://github.com/spotify/docker-maven-plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <configuration>
                <!--打標(biāo)記,并上傳到私有倉庫-->
                <imageName>192.168.233.136:5000/${project.artifactId}:${project.version}
                </imageName>
              <!--指定基礎(chǔ)鏡像-->
                <baseImage>dockerjdk8</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>
                <!--信認(rèn)地址-->
                <dockerHost>http://192.168.233.136:0312</dockerHost>
            </configuration>
        </plugin>
    </plugins>
</build>
不通過私有庫直接推送到docke中
    <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.2.0</version>

                <configuration>
                    <!-- 鏡像名稱 -->
                    <imageName>${project.artifactId}:${project.version}</imageName>

                    <!-- 基礎(chǔ)鏡像jdk 1.8-->
                    <baseImage>java</baseImage>

                    <!--切換到/ROOT目錄 -->
                    <workdir>/ROOT</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>

                    <!-- 指定 Dockerfile 路徑
                      <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                   -->

                    <!--指定遠(yuǎn)程 docker api地址-->
                    <dockerHost>http://192.168.4.182:0312</dockerHost>

                    <!-- 這里是復(fù)制 jar 包到 docker 容器指定目錄配置 -->
                    <resources>
                        <resource>
                            <targetPath>/ROOT</targetPath>
                            <!--用于指定需要復(fù)制的根目錄蕉朵,${project.build.directory}表示target目錄-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要復(fù)制的文件。${project.build.finalName}.jar指的是打包后的jar包文件阳掐。-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>

                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>
        </plugins>
    </build>
IDEA docker 插件使用
添加docker插件
查看容器狀態(tài)
配置信息
配置
啟動
啟動
查看
查看啟動狀態(tài)
點擊IDEA右側(cè)的M 選擇服務(wù)執(zhí)行以下命令
mvn clean package docker:build  -DpushImage
啟動上傳后的容器
docker run -di --name eureka -p 8001:8001  my_eureka:1.0-SNAPSHOT

Gogs安裝與配置

(1) 下載鏡像 (本地git服務(wù)器)
docker pull gogs/gogs
(2)啟動容器
docker run -di --name gogs -p 3000:3000  gogs/gogs
(3) 配置
假設(shè)我的centos虛擬機IP為192.168.233.136 完成以下步驟? 在地址欄輸入[http://192.168.233.136:3000](http://192.168.233.136:3000) 會進入首次運行安裝程序頁面始衅,我們可以選擇一種數(shù)據(jù)庫作為gogs數(shù)據(jù)的存儲,最簡單的是選擇SQLite3缭保。如果對于規(guī)模較大的公司汛闸,可以選擇MySQL

首頁只需修改紅線兩處即可

注冊頁面

點擊加號創(chuàng)建倉庫

創(chuàng)建倉庫

創(chuàng)建成功后的倉庫頁面

IDEA選擇git方式

選擇git

打開Settings 找到git 選擇本地安裝git目錄

添加git地址

將gogs地址添加

選擇Add 添加本地git

上傳到git服務(wù)器

添加注解并上傳

上傳并push

點擊push

輸入剛才創(chuàng)建的git賬號與密碼

刷新頁面看到上傳的服務(wù)

Jenkins安裝

Jenkins架構(gòu)圖

配置maven插件與倉庫

(1) 將jdk-8u171-linux-x64.rpm上傳至服務(wù)器(虛擬機)
執(zhí)行安裝命令: rpm -ivh jdk-8u171-linux-x64.rpm
(2)安裝Maven與本地倉庫
# 解壓插件
tar -zxvf apache‐maven-3.3.9-bin.tar.gz
(3) 上傳maven倉庫
ALT+P
push -f  要上傳的倉庫目錄
(4) 配置本地倉庫目錄(settings.xml)
編輯setting.xml配置文件 vi /usr/local/maven/conf/settings.xml ,配置本地倉庫目錄,內(nèi)容如下
<localRepository>/usr/local/repository</localRepository>
(5)再次編輯settings.xml配置文件
vi /usr/local/maven/conf/settings.xml

<pluginGroups>     
    <pluginGroup>com.spotify</pluginGroup>  (添加些內(nèi)容)   
</pluginGroups>

Jenkins安裝與啟動

(1)上傳jenkins安裝包并安裝
創(chuàng)建目錄:  mkdir  mkdir -p /usr/local/jenkins
安裝命令:  rpm -ivh jenkins-2.83-1.1.noarch.rpm
(2) 配置jenkins
vi /etc/sysconfig/jenkins
修改配置jenkins內(nèi)容
(3) 啟動服務(wù)
systemctl start jenkins  或者 service jenkins start
啟動后復(fù)制首頁的密文進行解密
復(fù)制密文
cat /var/lib/jenkins/secrets/initialAdminPassword
進行解密

點擊左側(cè)安裝插件

插件就gitsvn有用

注冊賬號

點擊系統(tǒng)管理

點擊管理插件

可選插件點擊maven直接安裝

點擊全局工具配置

配置JDK環(huán)境變量

配置maven

點擊首頁新建

添加項目點擊OK

勾選git并添加git地址

指定POM并添加加maevn命令并且保存

刷新頁面點擊右側(cè)圖標(biāo)執(zhí)行

發(fā)布說明

點擊紅框里的按鈕查看執(zhí)行代碼

點擊控制臺輸出

docker中安裝jenkins

拉取鏡像
docker pull jenkins/jenkins:lts
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艺骂,一起剝皮案震驚了整個濱河市诸老,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钳恕,老刑警劉巖别伏,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忧额,居然都是意外死亡厘肮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門睦番,熙熙樓的掌柜王于貴愁眉苦臉地迎上來类茂,“玉大人,你說我怎么就攤上這事抡砂〈笤郏” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵注益,是天一觀的道長碴巾。 經(jīng)常有香客問我,道長丑搔,這世上最難降的妖魔是什么厦瓢? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任提揍,我火速辦了婚禮,結(jié)果婚禮上煮仇,老公的妹妹穿的比我還像新娘蒸痹。我一直安慰自己铛绰,他們只是感情好戳寸,可當(dāng)我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布梧油。 她就那樣靜靜地躺著,像睡著了一般夹姥。 火紅的嫁衣襯著肌膚如雪杉武。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天辙售,我揣著相機與錄音轻抱,去河邊找鬼。 笑死旦部,一個胖子當(dāng)著我的面吹牛祈搜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播士八,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼容燕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了婚度?” 一聲冷哼從身側(cè)響起缰趋,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陕见,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體味抖,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡评甜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仔涩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忍坷。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖熔脂,靈堂內(nèi)的尸體忽然破棺而出佩研,到底是詐尸還是另有隱情,我是刑警寧澤霞揉,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布旬薯,位于F島的核電站,受9級特大地震影響适秩,放射性物質(zhì)發(fā)生泄漏绊序。R本人自食惡果不足惜硕舆,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望骤公。 院中可真熱鬧抚官,春花似錦、人聲如沸阶捆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洒试。三九已至倍奢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間儡司,已是汗流浹背娱挨。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捕犬,地道東北人跷坝。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像碉碉,于是被迫代替她去往敵國和親柴钻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,658評論 2 350