傳統方法的缺點
網上有很多關于使用Docker部署SpringBoot應用的教程,但是無一例外地使用了本地的Docker構建鏡像,然后通過push本地鏡像的方式提交至阿里云容器服務。
類似教程如:
按照如此方法,不僅需要引入并配置使用Spring Boot Maven plugin
這個插件,還需要在本地機器安裝Docker,然后執行mvn package docker:build
。
構建好鏡像后,再push到遠程鏡像倉庫中。這樣不僅每一次更新都要重新構建、重新push,而且極度消耗本地機器性能。
使用阿里云鏡像服務構建
阿里云提供的鏡像服務中,可以通過源代碼直接構建,只需指明代碼中的Dockerfile
路徑即可。由于其鏡像構建服務可以使用海外機器構建,因此在構建maven項目時,
不會存在麻煩的倉庫更新緩慢的問題。
具體做法如下:
-
在
SpringBoot
項目根路徑下創建DockerFile
:
編輯
Dockerfile
,這里使用官方的maven
鏡像作為基礎鏡像:
FROM maven:3.5.4-alpine
ADD . /app
WORKDIR /app/
RUN mvn clean package
EXPOSE 8080
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar target/tim-sign-fys-0.0.1-SNAPSHOT.jar
注意:將
target/tim-sign-fys-0.0.1-SNAPSHOT.jar
替換為你的工程打包好的.jar包路徑。
-
上傳至代碼倉庫后,使用阿里云鏡像服務進行構建:
-
進入鏡像管理,
立即構建
鏡像:
-
進入容器服務控制臺,使用構建好的鏡像創建應用:
-
創建成功,SpringBoot應用自動啟動:
-
如果配置了路由,則可以很方便地從公網訪問剛剛創建的SpringBoot應用:
因為此示例項目沒有監聽根路徑
'/'
,因此訪問根路徑報錯Whitelabel Error Page
,但是這正好證明SpringBoot應用已經部署成功。
通過這種方法部署SpringBoot應用到阿里云容器服務上簡單、高效。如果你的應用不想運行在阿里云容器服務中,同樣可以使用阿里云容器鏡像服務遠程構建你的
鏡像。然后將構建好的鏡像部署到你指定的任意容器中即可。
原文地址: http://www.trojx.me/2018/07/23/docker-springboot-aliyun/