Docker打包SpringBoot的四種方式

一:最基本的Dockerfile構建Springboot項目

在pom同目錄下新建Dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp COPY target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] 複製代碼

將Springboot使用Maven打包,在終端中傳參進去,進行構建Images。java

docker build --build-arg=target/*.jar -t demo1/app .
#構建完成後啓動容器
docker run -p 8080:8080 demo1/app
複製代碼

給Springboot啓動時候傳環境變量或者shell參數

FROM openjdk:8-jdk-alpine
VOLUME /tmp ARG JAR_FILE
COPY ${JAR_FILE} app.jar ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app.jar ${0} ${@}"] 複製代碼

指定JVM參數和shell參數git

docker run -p 9000:9000 -e "JAVA_OPTS=-Ddebug -Xmx128m" demo1/app --server.port=9000
複製代碼

二:使用Idea可視化管理docker, 構建Springboot容器

這個在我另一篇文章有講到,都比較簡單,有啥問題請留言。github

三:使用Maven插件自動化構建Image

github.com/spotify/doc… ,能力強的能夠直接去看README.md。
簡單介紹一下這個插件作啥用的docker

  • 經過pom配置docker構建Image過程,參數等 。
  • 封裝了自動化build,push,run等Maven命令 。
  • 須要依賴Dockerfile,Dockerfile與pom.xml位於同一個目錄下。
    在pom.xml同目錄下建立Dockerfile
FROM openjdk:8-jre
ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/myservice/app.jar"] 
ARG JAR_FILE
ADD target/${JAR_FILE} /usr/share/myservice/app.jar 複製代碼

在pom中添加shell

<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--你須要配置的地方-->

                    <!--指定倉庫名/鏡像名-->
                    <repository>myrep/${project.artifactId}</repository>
                    <!--指定tag -->
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <!--指定參數jar-->
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
複製代碼

最後在Idea Maven插件Plugins點擊docker:build便可。或者輸入命令bash

mvn com.spotify:dockerfile-maven-plugin:build
複製代碼

四:使用Google的Maven插件進行容器管理(重頭戲)

Google開源項目Jib,對比上面那個插件Jib的Start數爲7.8k,dockerfile-maven 爲2.4k。
maven 插件app

<plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <version>1.6.0</version>
                <configuration>
                    <!--配置基本鏡像-->
                    <from>
                        <image>openjdk:8-jdk-alpine</image>
                    </from>
                    <!--配置最終推送的地址,倉庫名,鏡像名-->
                    <to>
                        <image>registry.hub.docker.com/maoduntt/test</image>
                    </to>
                </configuration>


                <!--綁定到maven lifecicle-->
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
複製代碼

配置maven docker hub帳戶和密碼,在maven settings.xml中添加maven

<server>
      <id>registry.hub.docker.com</id>
      <username>你的dockerhub用戶名</username>
      <password>你的dockerhub密碼</password>
    </server>
複製代碼

在idea maven插件中點擊或者maven命令 mvn compile jib:buildTaride

能夠看到推送遠程成功,Jib不須要寫Dockerfile只須要你在插件中定義構建類型,因此使用時請多參考github的文檔. 都不是特別難,看本身喜愛選擇一種方式,有問題請留言。 以爲這篇文章對您有幫助,麻煩點個讚唄.
相關文章
相關標籤/搜索