中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

SpringBoot | 第十四章:基于Docker的簡(jiǎn)單部署

2018-08-28    來(lái)源:importnew

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

前言

講解了單元測(cè)試,本章節(jié)講講應(yīng)用的部署吧。總體而言,在進(jìn)行自動(dòng)化部署時(shí),基本都會(huì)用上Jenkins+Maven+Docker進(jìn)行部署。本章節(jié)主要講解使用Maven+Docker進(jìn)行SpringBoot應(yīng)用的部署知識(shí)。

題外話:對(duì)于Docker,本人也是去年才第一次聽說的,當(dāng)時(shí)也沒有進(jìn)行過相關(guān)了解。然后年初的時(shí)候,本著學(xué)習(xí)的心態(tài),購(gòu)置了一臺(tái)阿里云的ECS服務(wù)器,之后的相關(guān)實(shí)踐,都是在這臺(tái)服務(wù)器上進(jìn)行的。這周末要是不需要加班,可能會(huì)先出個(gè)Docker入門教程,因?yàn)檫閑置了一臺(tái)服務(wù)器,剛好可以把自己當(dāng)作初學(xué)者,再重新來(lái)一遍,加深下印象,做下筆記。

Docker

關(guān)于Docker,百度百科是這么說的:Docker,是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

題外話:本人覺得,每個(gè)開發(fā)者都應(yīng)該了解下Docker,畢竟我們不是專業(yè)的運(yùn)維,如果一直在倒騰一些環(huán)境的安裝,也是蠻枯燥乏味的。使用了Docker可以減少很多的不必要,可以直接上手部署各式各樣的環(huán)境了。真的很Nice呀!

安裝jdk8鏡像

安裝命令為:

docker pull openjdk:8-jdk-alpine

安裝成功后,查看鏡像,表明已經(jīng)安裝成功了,當(dāng)然也可先不安裝,因?yàn)楹罄m(xù)是基于此鏡像進(jìn)行編寫Dockerfile的,所以這里先下載了。

大家可在:https://hub.docker.com/搜索,并選擇自己想要的對(duì)應(yīng)鏡像文件。

dockerdocker

maven插件推送方式

基于此方式時(shí),是本地利用maven的docker插件進(jìn)行編譯,同時(shí)推送到遠(yuǎn)程的docker服務(wù)器中。所以事先需要遠(yuǎn)程的Docker服務(wù)開啟遠(yuǎn)程訪問權(quán)限。本例演示的Docker版本為(docker -v 命令):

Docker version 1.13.1, build 774336d/1.13.1

這里說明下開啟的方式(基于阿里云的Linux系統(tǒng)):

1. 修改/etc/docker/daemon.json文件,加入hosts配置即可。
如:

{
  "hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]
}

2. 重新加載配置文件,并重啟docker

systemctl daemon-reload
systemctl restart docker

3. 驗(yàn)證,直接訪問:

curl 127.0.0.1:2375/info

返回記錄即可說明已經(jīng)生效。

也可以直接瀏覽器訪問:http://服務(wù)器IP:2375/info, 效果是一樣的(這里隱去了阿里云服務(wù)器的地址)。

接下來(lái)正式開始編寫示例。

0.創(chuàng)建一個(gè)web演示應(yīng)用(這里大家可自行創(chuàng)建,或者直接下載本章節(jié)示例)

demo應(yīng)用demo應(yīng)用

工程結(jié)構(gòu):

1.加入打包插件docker maven的pom依賴。

<build>
        <plugins>
            <!-- springboot打包 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.9</version>
                <configuration>
                   <!-- 鏡像名稱  -->
                   <imageName>lqdev.cn/demo</imageName>
                   <!-- docker遠(yuǎn)程服務(wù)器地址 -->
                   <dockerHost>http://服務(wù)器IP:2375</dockerHost>
                   <!-- Dockerfile文件存放目錄 -->
                   <dockerDirectory>src/main/docker</dockerDirectory>
                   <resources>
                    <resource>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.編寫Dockerfile,注意大小寫,后面的file是不大寫開頭的。

# Dockerfile
# 基于的鏡像
FROM openjdk:8-jdk-alpine

VOLUME /opt/tmp

ADD chapter-14-0.0.1-SNAPSHOT.jar app.jar

# -Djava.security.egd=file:/dev/./urandom 可解決tomcat可能啟動(dòng)慢的問題
# 具體可查看:https://www.cnblogs.com/mightyvincent/p/7685310.html
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

# 對(duì)外端口
EXPOSE 8080

 

3.編碼運(yùn)行。

mvn clean package docker:build -Dmaven.test.skip=true


注意:這里若出現(xiàn)了編譯異常,常見的就是500: HTTP 500 Internal Server Error了。造成這種的情況一般是鏡像名稱不符合命名規(guī)范:限制為字母數(shù)字?[a-zA-Z0-9],和標(biāo)點(diǎn)符號(hào)?[.-_],及/:(“:”一般上用來(lái)區(qū)分版本的,如lqdev.cn/demo:v1),或者Dockerfile文件未找到之類的,若出錯(cuò)了大家可重點(diǎn)看下這兩個(gè)地方。


網(wǎng)友反饋:有些環(huán)境會(huì)出現(xiàn)如下錯(cuò)誤

Caused by: com.spotify.docker.client.exceptions.DockerException: manifest for openjdk:8-jdk-alphine not found

出現(xiàn)此錯(cuò)誤時(shí),可考慮換一個(gè)鏡像,如jboss/base-jdk:8(此鏡像比較大,原來(lái)選擇openjdk:8-jdk-alphine也是出于大小考慮。),或者使用自制鏡像。


4.查看遠(yuǎn)程鏡像

docker images

鏡像查看

5.運(yùn)行鏡像,查看應(yīng)用是否正常啟動(dòng)。

docker run -d -p 8080:8080 lqdev.cn/my-springboot-images

查看日志或者直接瀏覽器訪問:http:服務(wù)器地址:8080/,即可。

日志查看日志查看

訪問服務(wù)訪問服務(wù)

有返回預(yù)期的數(shù)據(jù),部署成功!

基于已有鏡像,運(yùn)行jar

基于有時(shí)候沒有開啟遠(yuǎn)程服務(wù),也可把jar上傳至服務(wù)器,然后編寫腳本進(jìn)行運(yùn)行,這里簡(jiǎn)單示例下,正常部署時(shí),正常是通過jenkins打包,然后編寫打包后事件,運(yùn)行腳本即可。

編寫運(yùn)行鏡像腳本:

docker run -d -p 1234:8080 -v /opt/docker/chapter-14-0.0.1-SNAPSHOT.jar:/usr/chapter-14-0.0.1-SNAPSHOT.jar --name SpringbootByJar openjdk:8-jdk-alpine java -jar /usr/chapter-14-0.0.1-SNAPSHOT.jar

控制臺(tái)輸出

其實(shí)就是把jar拷貝從宿主中拷貝到容器中,然后運(yùn)行java命令進(jìn)行啟動(dòng)。和原來(lái)的運(yùn)行jar方式是一樣的。

運(yùn)行后訪問:http://服務(wù)器地址:1234 即可查看效果,驗(yàn)證是否部署成功了。

瀏覽器查看瀏覽器查看

總結(jié)

本章節(jié)主要是講解了利用MavenDocker打包工具進(jìn)行應(yīng)用構(gòu)建同時(shí)推送到遠(yuǎn)程倉(cāng)庫(kù)及已有jar的情況下,直接在容器中運(yùn)行jar。其實(shí)原理都是一樣的,都是把jar放入到容器中,然后利用java命令進(jìn)行運(yùn)行應(yīng)用。本章節(jié),若是對(duì)docker不熟悉可能會(huì)有點(diǎn)懵,因?yàn)楹枚嗝疃紱]有具體說明,(┬_┬),大家可查閱相關(guān)資料,對(duì)Docker有了解后在進(jìn)行嘗試。周末看看,有時(shí)間會(huì)寫幾章關(guān)乎Docker入門及基本使用的教程的,當(dāng)然這些教程都是個(gè)人見解了,但至少應(yīng)該能讓新手有個(gè)了解~

最后

目前互聯(lián)網(wǎng)上很多大佬都有SpringBoot系列教程,如有雷同,請(qǐng)多多包涵了。本文是作者在電腦前一字一句敲的,每一步都是實(shí)踐的。若文中有所錯(cuò)誤之處,還望提出,謝謝。

標(biāo)簽: ecs服務(wù)器 isp linux 服務(wù)器 服務(wù)器地址 互聯(lián)網(wǎng) 腳本 開發(fā)者 權(quán)限 搜索 云服務(wù) 云服務(wù)器

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:SpringBoot | 第十一章:Redis 的集成和簡(jiǎn)單使用

下一篇:SpringBoot | 第十三章:測(cè)試相關(guān)(單元測(cè)試、性能測(cè)試)