準備工作
-
安裝Docker,網上很多教程可以參考一下Docker安裝教程
-
SpringBoot項目,參考教程
開搞開搞
- 在項目目錄創建Dockerfile文件:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD security-0.0.1-SNAPSHOT.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" ]
- Pom文件中添加docker支持
<properties>
<docker.image.prefix>security</docker.image.prefix>
</properties>
<build>
<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</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
- 創建docker鏡像
項目根目錄下執行命令
shenjiangangdeMacBook-Pro:security shenjg$ mvn package -Dmaven.test.skip=true docker:build
打包成功後可以看到
Successfully built ee0de0d073c8
Successfully tagged security/security:latest
[INFO] Built security/security
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.123 s
[INFO] Finished at: 2018-09-17T17:29:00+08:00
[INFO] Final Memory: 36M/542M
[INFO] ------------------------------------------------------------------------
- 運行docker容器
shenjiangangdeMacBook-Pro:blog shenjg$ docker run --name=docker-demo -p 8080:8080 -t security/security
沒有問題的話就可以看到springboot項目的啓動過程,啓動完成後使用瀏覽器訪問
localhost:8080
整個打包部署的流程告一段落,接下來可以查看一下容器的運行狀態
查看容器的運行情況
shenjiangangdeMacBook-Pro:security shenjg$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1525df1db15 security/security "sh -c 'java $JAVA_O…" 6 minutes ago Up 6 minutes 0.0.0.0:8080->8080/tcp docker-demo
docker容器的基本操作(啓動/關閉/重啓/刪除)
docker start/stop/restart/rm CONTAINER ID /NAMES
其中:
CONTAINER ID : 是容器id,執行 docker ps 可查看 eg:b1525df1db15
NAMES: 是容器的名稱,也就是docker run –name後面的名字 eg:docker-demo