您不能使用 spotify 插件从 docker-compose.yml 文件开始构建图像。自述文件提到设计目标是:
不要做任何花哨的事情。Dockerfiles 是你构建 Docker 项目的方式;这就是这个插件使用的。
您引用的文档的那一部分实际上说,在 Maven 多模块项目结构上,可以轻松使用其他构建工具,例如docker-compose
.
尽管如此,还是有一些方法可以从docker-compose.yml
. 一种是使用maven-exec
对于有问题的文件:
version: "2"
services:
service-a:
build: a/
image: imga
service-b:
build: b/
image: imgb
links:
- service-a
的相关部分pom.xml
将类似于以下内容:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>docker-build</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>docker-compose</executable>
<workingDirectory>${project.basedir}</workingDirectory>
<arguments>
<argument>build</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
另一种解决方案是使用fabric8
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.26.0</version>
<executions>
<execution>
<id>docker-build</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<images>
<image>
<external>
<type>compose</type>
<basedir>${project.basedir}</basedir>
<composeFile>docker-compose.yml</composeFile>
</external>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
使用最适合您的那一款。