1. 程式人生 > >Docker打包Spring Boot工程

Docker打包Spring Boot工程

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