在本文中,我们看到了两个如何容器化Spring Boot应用程序的示例。第一种选择是使用Dockerfile。第二个选项是docker-maven-plugin,它可以为我们完成所有工作。该插件可帮助您构建Docker映像和管理容器,尤其是对于集成测试。
您可以在GitHub存储库中找到应用程序的源代码;docker-maven-plugin的存储库。
Docker的Spring Boot
先决条件
1. Docker文件
们使用具有简单格式的Dockerfile。让我们在Spring Boot应用程序的根目录中创建一个新文件,名称为Dockerfile:
FROM openjdk:14-alpine |
- FROM — 此关键字显示基于创建容器的镜像。在本例中,我们使用openjdk:14-alpine。您可以在dockerhub中浏览所有可能的镜像。
- ARG—该ARG指令定义了一个变量,用户可以在构建时docker build使用带有--build-arg <varname>=<value>标志的命令通过该变量将其传递给构建器。
- COPY —此操作将指定的文件或目录复制到容器
- CMD — CMD命令是为执行中的容器提供默认值
要检查我们的容器,让我们使用终端。此时,应该已经安装并运行了docker 。我们需要创建一个.war文件,以后将其放置在容器中。为此,请运行以下命令
mvn clean install
2. docker-maven-plugin
借助此插件,我们将docker集成到了maven的生命周期中。该插件应pom.xml在build标签中添加到我们的文件中。
<build> |
让我们看一些标签。
- <name>标签-这个标签用于指定镜像的名称。
- 所述<contextDir>标签-指定含有Dockerfile将被用于创建镜像的目录。
如果您不想使用docker文件,则可以在<build>标记中指定所有必需的设置。在这种情况下,请在<contextDir>插入以下代码,而不是标签。
<from>openjdk:14-alpine</from> |
为了自动创建镜像,让我们在<configuration>标记后添加以下代码。
<executions> |
每次mvn package执行命令时,都会创建一个docker镜像。
该插件还支持通过docker-compose文件进行配置,尤其是对于运行中指定的容器docker-compose.yml。Docker Compose处理也可以作为外部配置提供程序使用。
您可以在此处阅读文档— docker-compose>https://dmp.fabric8.io/docker-compose
将io.fabric8插件添加到pom.xml文件后,我们可以使用新命令:
- docker:start 创建并启动容器
- docker:stop 停止并销毁容器
- docker:build 建立镜像
- docker:watch 注意进行重建和重新启动
- docker:push 将镜像推送到注册表
- docker:remove 从本地Docker主机中删除镜像
- docker:logs 显示容器日志
- docker:source 将docker build归档文件附加到Maven项目
- docker:save 将镜像保存到文件
- docker:volume-create 创建一个卷以在容器之间共享数据
- docker:volume-remove 删除创建的卷