Docker可以说是改变了现代软件行业,化繁为简,与诸多领域完美结合,比如说微服务,Docker让微服务更方便落地,也不用考虑环境配置的问题。

作为微服务中的代表SpringBoot框架,今天我们就来了解一下如何在Docker容器中运行一个SpringBoot应用。

说来其实很简单,只需要在pom.xml中指定docker插件即可。

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.0</version>
    <configuration>
        <!-- 镜像名称 -->
        <imageName>zeus/${project.artifactId}</imageName>
        <!-- 基础镜像,运行一个springboot应用只需要基础的java环境就行 -->
        <baseImage>java:8</baseImage>
        <!-- docker启动的时候执行的命令 -->
        <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
        <resources>
        <resource>
            <targetPath>/</targetPath>
            <directory>${project.build.directory}</directory>
            <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

另外只需要在你的项目中编写所需的代码即可。

部署到Docker

将你的项目复制到Linux主机中。

image.png

使用cd命令进入项目路径,使用maven命令进行打包。

mvn clean
# -Dmaven.test.skip=true 是跳过测试代码
mvn package -Dmaven.test.skip=true
mvn docker:build

image.png

命令执行完毕后可以发现镜像打包成功了。

image.png

使用docker images查看。

image.png

可以看到我们打包的zeus/zeus-docker镜像已经存在了,还有一个java的镜像是需要的依赖。

运行容器

使用命令运行容器。

docker run -d --name zeus-test -p 8080:8080 zeus/zeus-docker

-d 是指定后台运行 --name是指定容器名称 -p 8080:8080 是指将容器的8080端口映射给宿主机的8080端口 格式为:主机(宿主)端口:容器端口

image.png

运行成功之后,就可以测试我们的接口了。

image.png

image.png

实在方便了