1. 程式人生 > >將spring cloud打包docker映象

將spring cloud打包docker映象

簡介:用spring cloud構建微服務後,微服務肯定要docker映象化然後用rancher等視覺化工具管理,這就是走完了一套基本的流程,現在簡單介紹下

環境:兩臺centos7.x的伺服器,一臺本地window10

        一個spring cloud的eureka的註冊中心,

        一個spring cloud的普通服務,註冊到eureka

前提:首先你的spring cloud註冊中心和普通服務要能本地執行,百度一搜到處都是資料,這裡我就不細講了,現在我們要把spring cloud部署到伺服器上面

步驟:1.修改註冊中心專案配置檔案

spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=IP1  //註冊中心所在伺服器IP
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://IP1:1111/eureka/   //這裡注意加上http://

           修改普通服務配置檔案    

spring.application.name=api-gateway
server.port=5555
eureka.instance.hostname=IP2   //普通服務所在伺服器IP
eureka.client.serviceUrl.defaultZone=http://IP1:1111/eureka/   //這裡注意加上http://

然後我們打包jar,這裡有兩種打包方式,一種是執行編譯後的java檔案,一種是打包jar,我們選擇的是打包jar包,進入專案的根目錄,按住shift右擊滑鼠,點選在此處開啟視窗,輸入mvn install package(需要是maven專案,官網下載的spring boot初始專案自己配置了),完成後進去target目錄找到jar包,現在我們直接在伺服器上面執行java -jar jar-name是可以的,訪問專案地址測試成功,繼續將jar包封裝成docker image,這個時候我們需要在jar包的同一目錄新建一個Dockerfile(必須是這個名稱)檔案

Dockerfile內容:

# 基於哪個映象
FROM java:8

# 將本地資料夾掛載到當前容器
VOLUME /home/container

# 拷貝檔案到容器,也可以直接寫成ADD eureka-server-0.0.1-SNAPSHOT.jar /app.jar
# 這個地方jar包名稱改成自己的jar名稱
ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'

# 開放1111埠
EXPOSE 1111

# 配置容器啟動後執行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

實際就是執行的linux命令,容器有自己一套獨立的環境,實現了環境的隔離,後面不管在什麼環境下,我們pull下這個映象就可以直接執行

然後打包映象 docker build -t eureka-server .   //eureka-server是映象名稱可以自己定,最後的一個.不要省略了,他是用來找到Dockerfile檔案的,不然會打包不成功的

打包完成後執行docker images檢視映象,發現有我們的eureka-server映象了

將映象執行在容器中:docker run -d -p 1111:1111 eureka-server  //-d 表示後臺執行,-p是埠對映

成功後檢視正在執行容器: docker ps 發現eureka-server已經執行起來,訪問http://IP1:1111就出現了我們熟悉的註冊中心的介面了,bingo

普通服務是一樣的,放在另一臺伺服器上面(當然也可以放在同一臺伺服器上面的),啟動成功我們就在註冊中心頁面看到api-gate這個服務已經註冊進來了

這樣我們就實現了基本的spring cloud的docker化,當然如果你會打包docker映象了就會發現每次都要打包很煩很煩,需求驅動你需要做持續集成了,還有介面化的管理等等