
由于容器化的引入,使用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檔案夾下
3.制作鏡像
1. cd /root/docker
2. docker build -t eureka . //注意此處的空格與. eureka為鏡像别名!!!!
3. 複制代碼
一定要注意". " .後面有個空格!
如果出現錯誤 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鏡像了。
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