如果您使用的是Docker和Java,则可能要做的一件事是从构建工具( Maven或Gradle )中的Dockerfile中构建映像。 在这篇文章中,我将向您展示在两种情况下该如何做。
我将假定您具有实际的项目布局,在项目的根目录中具有Dockerfile文件。
马文
有几个Maven插件可用于在Maven中构建Docker映像,但最常用的插件之一是fabric8-maven-plugin 。
首先,您需要在以下位置注册和配置插件
pom.xml :
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.16.7</version>
<configuration>
<images>
<image>
<name>arquillian/age-checker:${project.version}</name>
<build>
<dockerFileDir>${project.basedir}</dockerFileDir>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
在配置部分中,设置映像名称和Dockerfile所在的目录。
位于dockerFileDir目录中的所有其他文件也将添加到构建上下文中。 由于Dockerfile位于项目的根目录下,因此也添加了目标目录。 出现问题是因为此插件使用target / docker生成了构建,并且如果尝试构建它,则会遇到下一个异常: tar文件不能包含self 。 为避免此问题,您需要创建.maven-dockerignore文件,指定必须在与该目录相同的级别上忽略哪个目录。
Dockerfile的 :
target/docker/
就是这样,之后您可以执行以下操作:
mvn软件包docker:build
请注意,此插件支持Docker环境变量,例如DOCKER_HOST,DOCKER_CERT_PATH等等 ,因此,如果您的环境配置正确,则无需执行其他任何操作。
摇篮
有几个Gradle插件可用于在Gradle中构建Docker映像,但最常用的插件之一是gradle-docker-plugin 。
首先,您需要在以下位置注册和配置插件
build.gradle :
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.bmuschko:gradle-docker-plugin:3.0.3'
}
}
apply plugin: 'com.bmuschko.docker-remote-api'
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
docker {
if (System.env.containsKey('DOCKER_HOST') && System.env.containsKey('DOCKER_CERT_PATH')) {
url = System.env.DOCKER_HOST.replace("tcp", "https")
certPath = new File(System.env.DOCKER_CERT_PATH)
}
}
task buildImage(type: DockerBuildImage) {
dependsOn assemble
inputDir = project.rootDir
tag = "arquillian/game-service:${project.version}"
}
对于Gradle ,您需要配置Docker主机属性,因为插件不支持Docker环境变量。 您需要在docker {}块中配置它们。
最后,创建一个类型为DockerBuildImage的任务,在其中使用inputDir属性设置Dockerfile根目录,并使用tag属性设置映像名称。
结论
因此,在本文中,您已经看到了在两种不同的构建工具中执行相同操作的不同方法,这些工具是从Dockerfile构建Docker映像。 请注意,这些插件还允许您将Dockerfile内容定义为配置字段,因此您不是在创建Dockerfile文件,而是在构建工具中指定其内容。 如果是Maven插件,则可以在https://dmp.fabric8.io/上阅读有关此功能的更多信息;如果是Maven插件,则可以在https://github.com/bmuschko/gradle-docker-plugin#creating-a-dockerfile-and-building-在Gradle情况下的图像 。
我们不断学习,
亚历克斯
蜜蜂会嗡嗡作响,孩子们会吹蒲公英的绒毛,夏天我会做任何雪。,手里拿着一杯饮料,我的雪靠着燃烧的沙子,夏天很可能晒得黑黑。 (夏季-冻结)
翻译自: https://www.javacodegeeks.com/2016/10/build-docker-images-maven-gradle.html