新建一個(gè)springboot的項(xiàng)目。
在src/main/docker下建立Dockerfile文件構(gòu)建鏡像

image
Dockerfile文件的內(nèi)容為:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD spring-boot-docker-1.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- FROM ,表示使用 Jdk8 環(huán)境 為基礎(chǔ)鏡像,如果鏡像不是本地的會(huì)從 DockerHub 進(jìn)行下載
- VOLUME ,VOLUME 指向了一個(gè)
/tmp的目錄,由于 Spring Boot 使用內(nèi)置的Tomcat容器,Tomcat 默認(rèn)使用/tmp作為工作目錄。這個(gè)命令的效果是:在宿主機(jī)的/var/lib/docker目錄下創(chuàng)建一個(gè)臨時(shí)文件并把它鏈接到容器中的/tmp目錄 - ADD ,拷貝文件并且重命名
- ENTRYPOINT ,為了縮短 Tomcat 的啟動(dòng)時(shí)間,添加
java.security.egd的系統(tǒng)屬性指向/dev/urandom作為 ENTRYPOINT
在pom中添加docker插件
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</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>
</build>
確定系統(tǒng)中已經(jīng)安裝過docker
可以輸入docker version查看docker安裝版本
確定系統(tǒng)安裝過maven環(huán)境。
可以輸入mvn -version查看maven版本信息
將springboot項(xiàng)目上傳至已經(jīng)部署好的linux系統(tǒng)中
image
進(jìn)入spring-boot-docker文件,進(jìn)行打包,輸入:
mvn package
image
使用 DockerFile 構(gòu)建鏡像
mvn package docker:build
構(gòu)建成功
image
查看構(gòu)建好的鏡像
docker images
image
運(yùn)行該鏡像
docker run -p 8899:8899-t springboot/spring-boot-docker
查看正在運(yùn)行的鏡像
docker ps
image
OK!