我正在尝试找出如何使用fabric8 docker-maven-plugin构建一个spring boot docker镜像。文档包含位和字节,我显然遗漏了一些东西。有谁有完整的pom.xml示例吗?
发布于 2017-04-01 01:15:38
如果你只是想快速入门,fabric8 8-maven-plugin文档是很难挖掘的,所以这里有一个快速示例,可以帮助你构建Docker镜像。
首先,确保docker在您的路径上,并且Docker守护进程正在运行。运行docker ps并确保得到如下响应:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES将此代码添加到您的pom.xml中,并使用mvn clean package docker:build运行此命令
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>fabric8-maven-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<images>
<image>
<!-- Replace your-project-name -->
<name>your-project-name:${project.version}</name>
<build>
<!-- This is the same FROM used in a Dockerfile -->
<from>vixns/java8</from>
<!-- This is the same ENTRYPOINT used in a Dockerfile -->
<entryPoint>
<exec>
<arg>java</arg>
<!-- This extra argument is so Tomcat can start faster due to lack of entropy -->
<arg>-Djava.security.egd=file:/dev/./urandom</arg>
<arg>-jar</arg>
<!-- /maven/ is the default dir that the plugin copies your artifact to -->
<arg>/maven/${project.artifactId}.${project.packaging}</arg>
</exec>
</entryPoint>
<assembly>
<!-- This is a predefined assembly.xml that will only copy your final artifact to the Docker image -->
<descriptorRef>artifact</descriptorRef>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>注意:如果您想要使用mvn docker:start命令,则需要额外的设置。您不必使用它,如果您愿意,您可以使用标准的docker命令。
发布于 2017-09-07 17:28:56
使用fabric8的Here is one of工作示例。该项目使用了spring boot docker镜像,然后将其链接到mongodb。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.20.0</version>
<configuration>
<!--<dockerHost>tcp://REMOTE_IP:2375</dockerHost> -->
<images>
<image>
<name>springboot-mongo-dockerimage:${project.version}</name>
<alias>springboot-mongo-dockerimage</alias>
<build>
<dockerFileDir>${project.basedir}</dockerFileDir>
</build>
<run>
<namingStrategy>alias</namingStrategy>
<dependsOn>
<container>mongo</container>
</dependsOn>
<links>
<link>mongo</link>
</links>
<ports>
<port>8080:8080</port>
</ports>
</run>
</image>
</images>
</configuration>
<executions>
<execution>
<id>start</id>
<phase>pre-integration-test</phase>
<goals>
<goal>stop</goal>
<goal>build</goal>
<goal>start</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>您可以通过follow this link获取分步说明
但是,您可以使用However文件,而不是从fabric8 maven插件构建图像,这就是为什么您会注意到
<build>
<dockerFileDir>${project.basedir}</dockerFileDir>
</build>DockerFile
FROM java:8
VOLUME /tmp
ADD target/Boot-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://mongo/test", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]如果你想把你的镜像推送到Docker hub注册表,那么你可以使用this link。
发布于 2016-11-05 06:31:23
如果你不需要使用这个插件,我推荐你使用spotify的docker-maven-plugin。设置完成后,您可以执行mvn clean package docker:build来构建docker映像。
您的pom.xml如下所示:
...
<properties>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<buildArgs>
<finalName>${project.build.finalName}.jar</finalName>
</buildArgs>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
...您在src/main/docker中的Dockerfile如下所示:
FROM openjdk:8u102-jre
ARG finalName
ADD $finalName /my-app.jar
ENTRYPOINT ["java","-jar","/my-app.jar"]参考文献:
https://stackoverflow.com/questions/39126226
复制相似问题