准备工作
-
安装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