一步步把一個SpringBoot應用打包成Docker映象並執行
(1) 首先要有一個可以工作的SpringBoot應用。
從Jerry的github上clone這個github repository到本地:
cd進入專案資料夾內,使用命令列mvn spring-boot:run
當看到控制檯輸出 Tomcat started on port: 5030(http)的提示後,說明SpringBoot應用在本地啟動成功,
這時用下面的url可以訪問這個SpringBoot應用,如果一切正常,
http:// localhost:5030/commerce /product
可以在瀏覽器裡看到Hello World:
注:該SpringBoot應用監聽的埠為5030,如果想修改成其他埠,在application.properties裡修改。
(2) 下一步是登入阿里雲伺服器,將該SpringBoot打包成Docker映象。
我的github倉庫裡已經寫好了一個Dockerfile檔案,Docker映象就是基於該Dockerfile進行製作。
第一行的FROM命令,指定了我們這個映象基於openjdk這個映象製作。
第二行的VOLUME命令,定義了一個持久化儲存,指向容器中的tmp資料夾。SpringBoot應用為內建的Tomcat伺服器例項建立的預設工作目錄為tmp,透過該命令,可以在執行Docker的宿主機目錄/var/lib/docker建立一個臨時的目錄,掛接到容器內部的tmp去。
如果你的SpringBoot應用不會進行持久化寫操作,則該步驟可以省略。
第三行,把本地目錄下target資料夾裡打好的jar檔案新增到容器裡,重新命名為app.jar.
第四行:ENV命令的作用是設定環境變數。在複雜的使用場景中,我們可能需要使用各種引數啟動JVM,這些引數透過ENV命令設定的環境變數傳入Java命令。在這個簡單的例子裡可以省略環境變數的設定。
第五行:ENTRYPOINT,顧名思義,容器映象執行的起始點。
瞭解了這個Dockerfile的作用和語法後,我們使用docker build基於這個Dockerfile生成一個映象。
> docker build -t jerry/springbootexample:v1 .
上面命令列最後的"."並不是表示結束的標點符號,而是Linux系統裡的".", 代表當前目錄。
執行上述命令列後,會看到我們在Dockerfile裡定義的5條命令被依次執行,首先是下載openJDK這個基礎映象:
然後依次執行剩餘步驟。
看到Successfully built 提示訊息後,說明該映象成功建立了。
使用docker images命令列能看到這個映象,大小為136MB.
(3) 最後,就是使用docker run命令執行這個映象。
run命令有很多引數,比如以互動式方式執行映象:
> docker run -it jerry/springbootexample:v1
這種方式下,映象處理使用者請求時的輸出會自動重定向到宿主機的控制檯上。
而-p引數可以實現埠對映,下面命令列的含義是把Docker內SpringBoot應用監聽的埠對映到宿主機的8000埠。這樣,當使用者在瀏覽器裡訪問時,使用的埠應該是宿主機的埠8000.
> docker run -p 8000:9000 --name jerrydockerdemo -d jerry/springbootexample:v1
可以使用docker ps命令拿到該執行映象的ID,再用docker stop命令終止映象的執行。
也可以使用命令docker exec -it, 進入一個正在執行的容器內部:
> sudo docker exec -it 8302db78f838 /bin/sh
我們之前在編寫Dockerfile時,用VOLUME指令建立的tmp,此時進入容器內部就可以觀察到了。在tmp裡,果然發現了SpringBoot在執行過程中,其內建的Tomcat例項執行時工作目錄下生成的資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2675744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將你的前端應用打包成docker映象並部署到伺服器?僅需一個指令碼搞定前端Docker伺服器指令碼
- 記一個 Docker 映象無法執行的坑Docker
- 如何把 Java Web 應用放在 docker 容器中執行JavaWebDocker
- 使用docker構建jenkins映象並執行容器DockerJenkins
- 用golang官方Docker映象執行專案GolangDocker
- 把可執行jar打包成exe檔案JAR
- Spring Boot學習總結(10)——SpringBoot打包成Docker映象Spring BootDocker
- 使用Dockerfile建立一個tomcat映象,並執行一個簡單war包DockerTomcat
- 一步步把 SAP UI5 應用部署到 SAP BTP Kyma 執行環境中去UI
- Docker入門系列之一:在一個Docker容器裡執行指定的web應用DockerWeb
- 把docker映象當作桌面系統來用Docker
- Docker部署並執行ElasticsearchDockerElasticsearch
- 體驗SpringBoot(2.3)應用製作Docker映象(官方方案)Spring BootDocker
- 詳解SpringBoot(2.3)應用製作Docker映象(官方方案)Spring BootDocker
- Docker初體驗,建立並匯出第一個本地映象Docker
- SpringBoot專案打成Docker映象並推送阿里雲Spring BootDocker阿里
- springboot將jsp打包成jar執行的坑Spring BootJSJAR
- Docker 如何把映象上傳到docker hubDocker
- 在Docker中,可以在一個容器中同時執行多個應用程序嗎?Docker
- 一個用於實現並行執行的 Java actor 庫並行Java
- springboot docker jenkins 自動化部署並上傳映象Spring BootDockerJenkins
- Docker安裝Jenkins打包Maven專案為Docker映象並執行【保姆級圖文教學】DockerJenkinsMaven
- 聊聊.net應用程式的Docker映象Docker
- 一個Flask應用執行過程剖析Flask
- Docker執行nginx映象及docker網路埠對映DockerNginx
- Docker安裝mysql映象並進行主從配置DockerMySql
- SpringBoot應用Docker化Spring BootDocker
- 將SpringBoot應用Docker化並部署到SAP雲平臺Spring BootDocker
- Docker容器中執行.Net Core應用程式Docker
- Python開發Windows桌面應用程式(三)應用程式打包成exeWindows可執行檔案PythonWindows
- docker - [15] springboot微服務打包docker映象DockerSpring Boot微服務
- Docker基礎:查詢映象和執行容器Docker
- winform只允許一個應用程式執行ORM
- 在Docker中執行SpringBoot程式DockerSpring Boot
- 如何Docker化任意一個應用Docker
- 【JUC】2-一把“鎖”兩個“並”三個“程”(JAVA多執行緒相關概念)Java執行緒
- SpringBoot 微服務打包 Docker 映象Spring Boot微服務Docker
- 在CentOS中使用docker執行nodejs應用CentOSDockerNodeJS