当前位置: 首页 > 工具软件 > gradle-docker > 使用案例 >

使用Maven和Gradle构建Docker映像

拓拔玺
2023-12-01

如果您使用的是DockerJava,则可能要做的一件事是从构建工具( MavenGradle )中的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

 类似资料: