之前部署過python、go應(yīng)用,就是沒部署過Java應(yīng)用串远,所以一直不清楚該如何去部署一個Java應(yīng)用(比如說Spring Boot應(yīng)用)
現(xiàn)在剛好要用到谢鹊,嘗試了一波,以下是我部署Spring Boot應(yīng)用的方法:
使用的工具
- SpringBoot
- Maven包管理工具
- docker
- docker-compose(依賴于docker,是docker的一個工具)
之前一直以為,用docker跑一定要跑全過程(意味著編譯、運行都在docker里)刁愿,后來沒想出啥辦法,就直接先手動編譯成jar到逊,在docker里跑JVM酌毡。這讓我想到和python的不同之處:jvm是一個完整的環(huán)境,可以直接跑一個jar文件蕾管,而python需要下載安裝各種依賴才能跑枷踏,沒有編譯過程,自然需要在docker里進行所有步驟掰曾。猜測像這種編譯型的應(yīng)用旭蠕,都應(yīng)該先編譯,然后直接放到docker里跑旷坦。
步入正題
服務(wù)器 Ubuntu 16.04
-
安裝工具
首先安裝docker掏熬,docker最新版安裝步驟直接看官網(wǎng)
直接用apt-get安裝
apt-get install maven docker-compose openjdk-8-jdk openjdk-8-jdk-headless
-
編譯
下面的步驟maven會提示你設(shè)置JAVA_HOME,但其實只要安裝完上面的內(nèi)容秒梅,運行java和javac不會顯示command not found
就行了(一般用apt-get安裝后的jdk目錄是/usr/lib/jvm/openjdk-8)
進入項目目錄mvn package
如果一切順利會在項目目錄下的target目錄下生成
項目名--0.0.1-SNAPSHOT.jar
的jar文件旗芬,這就是已經(jīng)編譯好的Java應(yīng)用程序了 -
docker-compose部署
- 在項目目錄下創(chuàng)建docker-compose.yml文件
version: '2' services: tasklist: restart: always build: context: . dockerfile: Dockerfile volumes: - .:/code ports: - "6789:6789"
- 在項目目錄下創(chuàng)建Dockerfile文件
FROM openjdk:8-jdk COPY ./target/application-0.0.1-SNAPSHOT.jar /usr/local ENTRYPOINT ["java", "-jar", "/usr/local/application-0.0.1-SNAPSHOT.jar"]
- 構(gòu)建鏡像、創(chuàng)建容器并運行
docker-compose up
- 在項目目錄下創(chuàng)建docker-compose.yml文件