Docker打包Spring Boot工程
阿新 • • 發佈:2018-12-26
1. 使用docker-maven-plugin外掛
在pom.xml中宣告使用docker-maven-plugin外掛
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName >
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath >/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
- imageNames是生成映象的名稱
- imageTags是將會生成的標籤,如上配置會生成兩個映象,一個標籤為latest,一個為當前版本號
- resource中宣告將構建輸出目錄中的jar包拷貝到docker構建目錄
- dockerDirectory宣告生成docker映象的檔案目錄在src/main/docker
2. 宣告引數
在pom中使用properties宣告一些引數
<properties>
<docker.image.prefix>lblimage</docker.image.prefix>
</properties>
project.version/project.build.directory/project.build.finalName等引數無需宣告,會直接取到
3. 新建Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim #包含jdk8的基礎映象
VOLUME /tmp #掛載點 重啟後資料還在,這裡暫時可以不要這句
ADD test-0.0.1-SNAPSHOT.jar lbltest.jar #拷貝包
ENV JAVA_OPTS="" #配置java引數
#執行映象時自動啟動
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /lbltest.jar"]
4. 構建映象檔案
mvn clean package docker:build
clean package後會在target/docker/目錄下生成Dockerfile和jar包
docker:build則會執行Dockerfile的語句,基於jdk8映象,拷貝jar包,並指定啟動時啟動java程式。
打包完後可以測試一下
#檢視映象
docker images
#執行映象
docker run -d -p 8080:8080 lblimage/test
#檢視映象執行狀態
docker ps