本地java -jar运行没问题,但是docker运行spring boot 包镜像出现no main manifest attribute问题

64 阅读1分钟

注意spring-boot-maven-plugin打包插件需要放在docker-maven-plugin插件上面,放在下面就会出现标题所说的错误

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--加入下面两项配置-->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version> 1.2.1</version>
                <!--将插件绑定在某个phase执行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--将插件绑定在package这个phase上,也就是说,用户只需要执行mvn package,就会自动执行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--指定生成的镜像名-->
                    <imageName>exam/${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <!--指定Dockerfile 的位置,${project.basedir}:项目的根路径下-->
                    <dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory>
                    <!--指定远程docker api地址-->
                    <dockerHost>http://192.168.124.13:2375</dockerHost>
                    <resources>
                        <resource>
                            <!--容器中自定义jar包存放的位置,及对应的target目录-->
                            <targetPath>/</targetPath>
                            <!--本地jar包所在路径-->
                            <directory>${project.build.directory}</directory>
                            <!--需要包含本地jar包名称,对应的是Dockerfile中添加的文件名-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <!--以下两行是为了docker push到DockerHub使用的-->
                    <!--<serverId>docker-hub</serverId>
                    <registryUrl>https://index.docker.io/v1</registryUrl>-->
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warName>${project.artifactId}</warName>
                </configuration>
            </plugin>
        </plugins>
    </build>