jdk1.8java
maven3web
docker https://www.docker.com/products/docker-toolboxspring
先新建一個springboot項目,一個最簡單的請求docker
在項目mian下新建docker目錄,在docker下新建Dockerfile文件apache
FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD test-0.0.1.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" ]
解釋下這個配置文件:tomcat
VOLUME
指定了臨時文件目錄爲/tmp
。其效果是在主機 /var/lib/docker
目錄下建立了一個臨時文件,並連接到容器的/tmp
。改步驟是可選的,若是涉及到文件系統的應用就頗有必要了。/tmp
目錄用來持久化到 Docker 數據文件夾,由於 Spring Boot 使用的內嵌 Tomcat 容器默認使用/tmp
做爲工做目錄ENTRYPOINT
執行項目 app.jar。爲了縮短 Tomcat 啓動時間,添加一個系統屬性指向 "/dev/urandom" 做爲 Entropy Sourcepom中增長maven-docker-pluginspringboot
<properties> <docker.image.prefix>springio</docker.image.prefix> </properties>
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</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>
打開docker客戶端,進入項目根目錄服務器
打包jar,oracle
$ mvn clean package
而後執行docker打包鏡像命令app
$ mvn clean package docker:build
打包成功,查看鏡像
運行鏡像
$ docker run -p 8080:8080 -t springio/test
而後訪問web請求 192.168.99.100:8080/get
docker服務器默認地址192.168.99.100
鏡像運行成功!