使用Docker打包容器化SpringBoot的RESTful API -Rafael Ferreira


在本文中,假设您已经了解Docker和AP​​I开发的原理,我将向您展示如何对Java API进行Docker化:生成docker镜像并dockerizing Springboot API,
我们将使用的API是使用以下技术开发的:

  • Java
  • Springboot
  • Maven
  • MongoDB
  • Docker

这是项目的链接https://github.com/rafaelferreiram/quick-api.git

为了使用maven生成docker镜像,我们需要使用一个有助于做到这一点的框架,而这就是dockerfile-maven,这是Spotify创建的插件,可以简化docker镜像的生成和通信。
在开始创建Docker镜像之前,我们必须创建一个Dockerfile文件,该文件负责将jar和配置暴露给Docker。dockerfile文件必须在项目根目录中生成:

FROM openjdk:8-jre
RUN mkdir app
ARG JAR_FILE
ADD /target/${JAR_FILE} /app/com.api-0.0.1-SNAPSHOT.jar
WORKDIR /app
ENTRYPOINT java -jar com.api-0.0.1-SNAPSHOT.jar

设置完Dockerfile配置后,我们必须将dockerfile-maven插件添加到项目的pom.xml中,标签为<plugins>,如下所示:

<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                    <repository>rafaelferreiram/brand-api</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>


请注意,在plugin标签内,我们还有另一个标签“ configuration”,可以在其中将docker config设置为我们的项目,例如

  • useMavenSettingsForAuth(我们将true设置为通过Maven设置来设置Authentication )
  • repository (我们必须告知我们的DockerID和所需映像的名称,因此,{dockerID}/{imageName},这用于将映像发送到Docker Hub。)
  • tag(version/imageTag。)
  • JAR_FILE(由我们的项目生成的.jar文件)。

设置Dockerfile并配置pom.xml之后,我们可以继续执行下一步以生成Docker映像。为此,我们必须转到项目根目录并运行以下命令,该命令将在Target文件夹内生成一个.jar文件。

mvn package

运行'mvn package'之后,我们可以检查本地docker镜像,看是否在其中。我们可以通过运行:

docker images

正式运行:有两种运行docker映像的方法,第一种将运行并向我们显示应用程序日志,第二种将在后台模式下运行。

docker run -p 8080:8080 {dockerID}/brand-api:0.0.1-SNAPSHOT

要在后台模式下运行它,我们只需要在命令中添加一个属性。'-d':

docker run -d -p 8080:8080 {dockerID}/brand-api:0.0.1-SNAPSHOT

访问:localhost:8080/brand/brands