首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fabric8 springboot完整示例

fabric8 springboot完整示例
EN

Stack Overflow用户
提问于 2016-08-24 22:33:41
回答 5查看 12.7K关注 0票数 6

我正在尝试找出如何使用fabric8 docker-maven-plugin构建一个spring boot docker镜像。文档包含位和字节,我显然遗漏了一些东西。有谁有完整的pom.xml示例吗?

EN

回答 5

Stack Overflow用户

发布于 2017-04-01 01:15:38

如果你只是想快速入门,fabric8 8-maven-plugin文档是很难挖掘的,所以这里有一个快速示例,可以帮助你构建Docker镜像。

首先,确保docker在您的路径上,并且Docker守护进程正在运行。运行docker ps并确保得到如下响应:

代码语言:javascript
复制
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

将此代码添加到您的pom.xml中,并使用mvn clean package docker:build运行此命令

代码语言:javascript
复制
<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命令。

票数 11
EN

Stack Overflow用户

发布于 2017-09-07 17:28:56

使用fabric8的Here is one of工作示例。该项目使用了spring boot docker镜像,然后将其链接到mongodb。

代码语言:javascript
复制
    <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插件构建图像,这就是为什么您会注意到

代码语言:javascript
复制
<build>
   <dockerFileDir>${project.basedir}</dockerFileDir>
</build>

DockerFile

代码语言:javascript
复制
    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

票数 2
EN

Stack Overflow用户

发布于 2016-11-05 06:31:23

如果你不需要使用这个插件,我推荐你使用spotify的docker-maven-plugin。设置完成后,您可以执行mvn clean package docker:build来构建docker映像。

您的pom.xml如下所示:

代码语言:javascript
复制
...
<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如下所示:

代码语言:javascript
复制
FROM openjdk:8u102-jre
ARG finalName
ADD $finalName /my-app.jar
ENTRYPOINT ["java","-jar","/my-app.jar"]

参考文献:

https://spring.io/guides/gs/spring-boot-docker

https://github.com/spotify/docker-maven-plugin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39126226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档