天天看點

極簡方式釋出springboot

極簡方式釋出springboot

由于容器化的引入,使用docker釋出項目是必須技能,下文帶你掌握如果用docker分别釋出前後端項目。本文以最簡化的配置方式舉例,保證可正常運作。

1.釋出springboot項目

1.編寫Dockerfile檔案

下文以eureka項目舉例,可以根據配置修改。

1. # Docker image for springboot file run
2. # VERSION 0.0.1
3. # Author: eangulee
4. # 基礎鏡像使用java
5. FROM java:8
6. # VOLUME 指定了臨時檔案目錄為/tmp。
7. # 其效果是在主機 /var/lib/docker 目錄下建立了一個臨時檔案,并連結到容器的/tmp
8. VOLUME /tmp 
9. # eureka-0.0.1-SNAPSHOT.jar為jar名稱 将jar包添加到容器中并更名為eureka.jar 注意要有/ 
10. ADD eureka-0.0.1-SNAPSHOT.jar /eureka.jar 
11. # 運作jar包 這裡的eureka.jar與上文eureka.jar對應
12. RUN bash -c 'touch /eureka.jar'
13. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka.jar"]
14. 複制代碼      

解釋下這個配置檔案:

VOLUME 指定了臨時檔案目錄為/tmp。其效果是在主機 /var/lib/docker 目錄下建立了一個臨時檔案,并連結到容器的/tmp。該步驟是可選的,如果涉及到檔案系統的應用就很有必要了。/tmp目錄用來持久化到 Docker 資料檔案夾,因為 Spring Boot 使用的内嵌 Tomcat 容器預設使用/tmp作為工作目錄

項目的 jar 檔案作為 “eureka.jar” 添加到容器的

ENTRYPOINT 執行項目 app.jar。為了縮短 Tomcat 啟動時間,添加一個系統屬性指向 “/dev/./urandom” 作為 Entropy Source

如果是第一次打包,它會自動下載下傳java 8的鏡像作為基礎鏡像,以後再制作鏡像的時候就不會再下載下傳了。

2.部署檔案

在伺服器建立一個docker檔案夾,将maven打包好的jar包和Dockerfile檔案複制到伺服器的docker檔案夾下

極簡方式釋出springboot

3.制作鏡像

1. cd /root/docker
2. docker build -t eureka .      //注意此處的空格與.  eureka為鏡像别名!!!!
3. 複制代碼      
一定要注意". " .後面有個空格!
極簡方式釋出springboot

如果出現錯誤 Step 3/5 : ADD eureka-0.0.1-SNAPSHOT.jar app.jarlstat eureka-0.0.1-SNAPSHOT.jar: no such file or directory

為ADD demo-0.0.1-SNAPSHOT.jar /eureka.jar處配置問題,請檢查是否指定了

Application

啟動檔案。

4.檢視鏡像

1. docker images
2. 複制代碼      

見下圖,可以看到本地已經有docker鏡像了。

極簡方式釋出springboot

5.啟動容器

  • 第一個8761:為你正在操作虛拟機對外的端口 。
  • 第二個8761:為docker容器對虛拟機提供的接口 。
  • --net=host:以本機ip作為容器位址。
  • eureka:為鏡像名稱。
1. docker run -d -p 8761:8761 --net =host eureka 
2. 複制代碼      
注意這裡有個坑,如果是使用springboot Netflix,在服務間調用時,會從eureka拉取服務的ip位址。但是不加--net =host,會拉取docker的虛拟出的位址,當服務間通路時會通路虛拟位址而不是需要通路的伺服器位址,是以這裡樓主使用伺服器位址作為docker的位址。如果有更好辦法請聯系樓主。

接下來就可以進入容器中,對容器進行操作了。

docker run -it eureka  /bin/bash