这是一个插件定义:
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.26.0</version>
<configuration>
<registry>000000000000.dkr.ecr.us-east-1.amazonaws.com/my-aws-registy-0000000000000:latest</registry>
<images>
<image>
<name>my-image</name>
<build>
<tags>
<tag>000000000000.dkr.ecr.us-east-1.amazonaws.com/my-aws-registy-0000000000000:latest</tag>
</tags>
<dockerFileDir>${project.build.directory}</dockerFileDir>
</build>
</image>
</images>
</configuration>
</plugin>
资源阶段Dockerfile
复制到target
后。当我尝试调用docker:build
目标时,我得到了:
[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.25.2:build (default-cli)
on project my-project: Execution default-cli of goal
io.fabric8:docker-maven-plugin:0.25.2:build failed: A tar file cannot include itself. -> [Help 1]
我想要什么 - 只需通过maven 执行简单的docker build -t .
命令,无需任何插件打包/构建/装配目标(或子目标)。
是的,这个插件有很多可能性,但我需要没有任何tar
存档的docker build,这必须从target
文件夹完成。
怎么做???
答案 0 :(得分:1)
docker的作用是将应添加到映像的所有文件组合到tar文件中,并将其发送到docker守护程序以构建映像。
该插件在target
文件夹的子目录(即${project.build.directory}
)中创建此tar文件。将目标文件夹作为docker插件的基础隐式包含创建的tar文件,因此会出现错误。
我在项目中所做的是将应添加到图像(ADD
/ COPY
)和Dockerfile
的所有文件复制到${project.build.directory}/dockerfile
目录然后使用<dockerFileDir>${project.build.directory}/dockfile</dockerFileDir>
答案 1 :(得分:0)
为什么不使用exec-maven-plugin调用docker本身?
我遇到了与您相同的问题,发现如果将Dockerfile放在目标文件夹之外,例如,
<dockerFile>${project.basedir}/Dockerfile</dockerFile>