国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringBoot使用Docker快速部署項目

tomato / 2835人閱讀

摘要:它是目前最流行的容器解決方案。創(chuàng)建文件在中加入以下信息注意必須和包在同一路徑下基礎(chǔ)鏡像必要,代表你的項目將構(gòu)建在這個基礎(chǔ)上面允許指定端口轉(zhuǎn)發(fā)創(chuàng)建一個可以從本地主機(jī)或其他容器掛載的掛載點,一般用來存放數(shù)據(jù)庫和需要保持的數(shù)據(jù)等。

1.簡介

</>復(fù)制代碼

  1. 建議閱讀本文最好對Dokcer有一些了解
首先我們先了解一下Docker是什么

Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。
Docker 將應(yīng)用程序與該程序的依賴,打包在一個文件里面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器里運行,就好像在真實的物理機(jī)上運行一樣。有了 Docker,就不用擔(dān)心環(huán)境問題。
總體來說,Docker 的接口相當(dāng)簡單,用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器。容器還可以進(jìn)行版本管理、復(fù)制、分享、修改,就像管理普通的代碼一樣。

Docker有什么用途

提供一次性的環(huán)境

提供彈性的云服務(wù)

組建微服務(wù)架構(gòu)

如何搭建Docker環(huán)境

使用yum安裝

</>復(fù)制代碼

  1. #查看你當(dāng)前的內(nèi)核版本
  2. uname -r
  3. #安裝 Docker
  4. yum -y install docker
  5. #啟動 Docker 后臺服務(wù)
  6. service docker start
  7. #測試運行 hello-world,由于本地沒有hello-world這個鏡像,所以會下載一個hello-world的鏡像,并在容器內(nèi)運行。
  8. docker run hello-world

腳本安裝:

</>復(fù)制代碼

  1. #確保 yum 包更新到最新
  2. sudo yum update
  3. #執(zhí)行 Docker 安裝腳本,執(zhí)行這個腳本會添加 docker.repo 源并安裝 Docker。
  4. curl -fsSL https://get.docker.com/ | sh
  5. #啟動 Docker 進(jìn)程
  6. sudo service docker start
  7. #驗證 docker 是否安裝成功并在容器中執(zhí)行一個測試的鏡像
  8. sudo docker run hello-world

因為國內(nèi)下載鏡像速度較慢,推薦使用替換為國內(nèi)的鏡像源

執(zhí)行命令

</>復(fù)制代碼

  1. vim /etc/docker/daemon.json
  2. 加入以下代碼
  3. {
  4. "registry-mirrors": [""]
  5. }
2.創(chuàng)建項目

首先我們先創(chuàng)建一個SpringBoot的項目,這個步驟就不在重復(fù)了,可以使用IDEA構(gòu)建或者訪問SpringBoot項目來進(jìn)行構(gòu)建項目。

完整的項目結(jié)構(gòu):

</>復(fù)制代碼

  1. boot-docker
  2. ├── pom.xml
  3. └── src
  4. ├── main
  5. │ ├── java
  6. │ │ └── com
  7. │ │ └── example
  8. │ │ └── bootdocker
  9. │ │ └── BootDockerApplication.java
  10. │ └── resources
  11. │ ├── application.properties
  12. │ ├── static
  13. │ └── templates

然后創(chuàng)建一個控制器,這里不做的太復(fù)雜,主要就是來演示Docker怎么部署項目。

主要代碼:

啟動然后打開瀏覽器訪問接口地址:

項目完成,現(xiàn)在開始部署到Docker中。

3.部署項目 3.1 使用Dockerfile

在部署項目之前我們要先了解一下Dockerfile 是什么?

Dockfile是一種被Docker程序解釋的腳本,Dockerfile由一條一條的指令組成,每條指令對應(yīng)Linux下面的一條命令。Docker程序?qū)⑦@些Dockerfile指令翻譯真正的Linux命令。Dockerfile有自己書寫格式和支持的命令,Docker程序解決這些命令間的依賴關(guān)系,類似于Makefile。Docker程序?qū)⒆x取Dockerfile,根據(jù)指令生成定制的image。相比image這種黑盒子,Dockerfile這種顯而易見的腳本更容易被使用者接受,它明確的表明image是怎么產(chǎn)生的。有了Dockerfile,當(dāng)我們需要定制自己額外的需求時,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻煩。參考

我們先把項目進(jìn)行打包執(zhí)行,執(zhí)行。

</>復(fù)制代碼

  1. mvn package

創(chuàng)建Dockerfile文件

</>復(fù)制代碼

  1. touch Dockerfile

在Dockerfile中加入以下信息:

</>復(fù)制代碼

  1. 注意Dockerfile必須和Jar包在同一路徑下

</>復(fù)制代碼

  1. FROM java:8
  2. EXPOSE 8080
  3. VOLUME /slm
  4. ADD boot-docker-0.0.1-SNAPSHOT.jar boot-docker.jar
  5. RUN sh -c "touch /boot-docker.jar"
  6. ENV JAVA_OPTS=""
  7. ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /boot-docker.jar" ]

FROM 基礎(chǔ)鏡像必要,代表你的項目將構(gòu)建在這個基礎(chǔ)上面

EXPOSE 允許指定端口轉(zhuǎn)發(fā)

VOLUME 創(chuàng)建一個可以從本地主機(jī)或其他容器掛載的掛載點,一般用來存放數(shù)據(jù)庫和需要保持的數(shù)據(jù)等。

ADD 將文件從路徑 復(fù)制添加到容器內(nèi)部路徑 支持遠(yuǎn)程url 如果是遠(yuǎn)程url權(quán)限將會是600

ENV 可以用于為docker容器設(shè)置環(huán)境變量

ENTRYPOINT 指定 Docker image 運行成 instance (也就是 Docker container) 時,要執(zhí)行的命令或者文件。

CMD 和 ENTRYPOINT 都能用來指定開始運行的程序,而且這兩個命令都有兩種不用的語法:

</>復(fù)制代碼

  1. CMD ["ls",""-l"]
  2. CMD ls -l

開始構(gòu)建:

</>復(fù)制代碼

  1. docker build -t boot-docker .

-t boot-docker 代表你要構(gòu)建的名字

更多參數(shù)輸入查看:docker build --help

控制臺輸出:

</>復(fù)制代碼

  1. Sending build context to Docker daemon 16.81MB
  2. Step 1/7 : FROM java:8
  3. ---> d23bdf5b1b1b
  4. Step 2/7 : EXPOSE 8080
  5. ---> Using cache
  6. ---> b2445bf62da8
  7. Step 3/7 : VOLUME /slm
  8. ---> Using cache
  9. ---> b73d0b73b868
  10. Step 4/7 : ADD boot-docker-0.0.1-SNAPSHOT.jar boot-docker.jar
  11. ---> Using cache
  12. ---> 2b4868aafca9
  13. Step 5/7 : RUN sh -c "touch /boot-docker.jar"
  14. ---> Using cache
  15. ---> 816b59f199af
  16. Step 6/7 : ENV JAVA_OPTS=""
  17. ---> Using cache
  18. ---> 784f033b9dd6
  19. Step 7/7 : ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /boot-docker.jar" ]
  20. ---> Using cache
  21. ---> 92a0da91ea19
  22. Successfully built 92a0da91ea19
  23. Successfully tagged bootdocker:latest

我們可以看到已經(jīng)構(gòu)建完成,Successfully built 92a0da91ea19這句話指明了剛剛構(gòu)建的鏡像ID現(xiàn)在我們可以根據(jù)這個ID來進(jìn)行操作。

輸入run命令來啟動。

</>復(fù)制代碼

  1. docker run -d -p 8080:8080 92a0da91ea19

控制臺輸出:

</>復(fù)制代碼

  1. root@izz30yg92yl9i3z /# docker run -d -p 8080:8080 92a0da91ea19
  2. 62b837ac75e3d83a4be2d7b0f6edee5ff70c69a98bac4ff74c7ed6d3e70282ee
  3. root@izz30yg92yl9i3z /#

-d 表示后臺運行

-p映射端口

已經(jīng)運行成功訪問接口。注意這里因為映射到了宿主機(jī)的端口所以訪問的是宿主機(jī)的IP加端口

更多參數(shù)輸入查看:docker build --help

3.2 使用Maven構(gòu)建

上面說了使用Dockerfile構(gòu)建,現(xiàn)在使用Maven來構(gòu)建,

在pom中加入docker構(gòu)建依賴

</>復(fù)制代碼

  1. com.spotify
  2. docker-maven-plugin
  3. 0.4.13
  4. ${docker.image.prefix}/${project.artifactId}
  5. /slm/
  6. /
  7. ${project.build.directory}
  8. ${project.build.finalName}.jar

注意dockerDirectory還是要設(shè)置Dockerfile文件的路徑

把項目復(fù)制到Linux主機(jī)中,執(zhí)行解壓命令

</>復(fù)制代碼

  1. unzip boot-docker.zip
  2. cd boot-docker

執(zhí)行命令:

</>復(fù)制代碼

  1. mvn package docker:build

控制臺輸出:

</>復(fù)制代碼

  1. [INFO] Building image boot-docker/boot-docker
  2. Step 1/7 : FROM java:8
  3. ---> d23bdf5b1b1b
  4. Step 2/7 : EXPOSE 8080
  5. ---> Using cache
  6. ---> b2445bf62da8
  7. Step 3/7 : VOLUME /slm
  8. ---> Using cache
  9. ---> b73d0b73b868
  10. Step 4/7 : ADD boot-docker-0.0.1-SNAPSHOT.jar boot-docker.jar
  11. ---> Using cache
  12. ---> 2b4868aafca9
  13. Step 5/7 : RUN sh -c "touch /boot-docker.jar"
  14. ---> Using cache
  15. ---> 816b59f199af
  16. Step 6/7 : ENV JAVA_OPTS=""
  17. ---> Using cache
  18. ---> 784f033b9dd6
  19. Step 7/7 : ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /boot-docker.jar" ]
  20. ---> Using cache
  21. ---> 92a0da91ea19
  22. ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
  23. Successfully built 92a0da91ea19
  24. Successfully tagged boot-docker/boot-docker:latest
  25. [INFO] Built boot-docker/boot-docker
  26. [INFO] ------------------------------------------------------------------------
  27. [INFO] BUILD SUCCESS
  28. [INFO] ------------------------------------------------------------------------
  29. [INFO] Total time: 19.908s
  30. [INFO] Finished at: Wed Jul 10 16:00:21 CST 2019
  31. [INFO] Final Memory: 35M/86M
  32. [INFO] ------------------------------------------------------------------------

和上面相同。啟動

</>復(fù)制代碼

  1. 歡迎轉(zhuǎn)發(fā)點贊

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/75293.html

相關(guān)文章

  • 谷歌助力,快速實現(xiàn) Java 應(yīng)用容器化

    摘要:在年下旬開源了一款新的工具,可以輕松地將應(yīng)用程序容器化。由于默認(rèn)訪問谷歌的倉庫,而國內(nèi)訪問不穩(wěn)定會經(jīng)常導(dǎo)致網(wǎng)絡(luò)超時,所以筆者使用了國內(nèi)的阿里云鏡像服務(wù),那么就不需要訪問谷歌的倉庫了。執(zhí)行完成后,我們可以在阿里云鏡像倉庫獲取鏡像。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 歡迎關(guān)注公眾號:「服務(wù)端思維」。一群同頻者,一起成長,一起精進(jìn),打破認(rèn)知的局限性。...

    Anonymous1 評論0 收藏0
  • 谷歌助力,快速實現(xiàn) Java 應(yīng)用容器化

    摘要:在年下旬開源了一款新的工具,可以輕松地將應(yīng)用程序容器化。由于默認(rèn)訪問谷歌的倉庫,而國內(nèi)訪問不穩(wěn)定會經(jīng)常導(dǎo)致網(wǎng)絡(luò)超時,所以筆者使用了國內(nèi)的阿里云鏡像服務(wù),那么就不需要訪問谷歌的倉庫了。執(zhí)行完成后,我們可以在阿里云鏡像倉庫獲取鏡像。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 歡迎關(guān)注公眾號:「服務(wù)端思維」。一群同頻者,一起成長,一起精進(jìn),打破認(rèn)知的局限性。...

    MudOnTire 評論0 收藏0
  • 市長信箱郵件查詢服務(wù): 將SpringBoot應(yīng)用部署Docker

    摘要:市長信箱郵件查詢服務(wù)將應(yīng)用部署到在上一章我完成了將部署到的工作和都具有能快速啟動的特性因此是一對用來部署微服務(wù)的黃金搭檔在計劃中基于的應(yīng)用也將部署到之上那我們就開始行動吧將部署到上需要執(zhí)行以下步驟保證打包后的可執(zhí)行能正常啟動在應(yīng)用中編寫鏡像 市長信箱郵件查詢服務(wù): 將SpringBoot應(yīng)用部署到Docker 在上一章, 我完成了將ES部署到Docker的工作. SpringBoot和...

    SKYZACK 評論0 收藏0
  • 市長信箱郵件查詢服務(wù): SpringBoot集成Docker上Redis服務(wù)

    摘要:集成上服務(wù)在我的應(yīng)用中希望能使用一些的特性比如這樣的數(shù)據(jù)結(jié)構(gòu)如果能方便的在開發(fā)環(huán)境中使用起來就好了如何集成呢這里依然使用和來幫忙通過使用我們就能快速的部署好服務(wù)而通過使用我們能快速的把集成進(jìn)我們的服務(wù)并能使用提供的模板方法方便的調(diào)用的使用快 SpringBoot集成Docker上Redis服務(wù) 在我的應(yīng)用中, 希望能使用一些redis的特性:比如zset這樣的數(shù)據(jù)結(jié)構(gòu),如果能方便的在開...

    lanffy 評論0 收藏0

發(fā)表評論

0條評論

tomato

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<