Docker這項容器技術已經是十分的火熱了,讀者要是不瞭解docker的話可以吧docker先理解為虛擬機器。
我們的Springboot最終是要部署在Linux上的,docker作為Linux輕量級的實現。docker也是可以用來部署Springboot應用的。
Springboot程式本人以Spring官網的demo為例。

首先我們進入demo的complete 目錄
下執行命令,mvn package && java -jar target/gs-spring-boot-docker-0.1.0.jar

這個命令是將demo打包並且執行。在瀏覽器輸入localhost:8080就可以訪問專案裡,此時的Springboot應用是部署在自己的作業系統上的。
我們按下Ctrl+C關閉掉Spring boot應用程式。

接下來我們來到src/main/docker目錄下,有個關鍵性的配置檔案Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

這個檔案是用來生成docker映象的

開啟我們的maven的pom.xml檔案,裡面有一個外掛


<plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.11</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>

執行命令

$ mvn package docker:build 

最後執行命令

docker run -p 8080:8080 -t springio/gs-spring-boot-docker

再在瀏覽器中輸入localhost:8080即可訪問在docker容器中執行的Spring boot應用

最後對外發布app的時候docker可以自動化釋出到任何一臺流行的Linux伺服器上