【问题标题】:Docker-compose: no main manifest attribute in /app.warDocker-compose:/app.war 中没有主要清单属性
【发布时间】:2019-04-19 02:09:03
【问题描述】:

我正在尝试将我的 Spring Boot 应用程序容器化,但是我遇到了 docker 问题...

docker-compose build
db uses an image, skipping   
Building drools-average-docker-app
Step 1/5 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/5 : VOLUME /tmp
 ---> Using cache
 ---> 6bbb9078c3f0
Step 3/5 : ADD target/DroolsAverage-0.0.1-SNAPSHOT.war DroolsAverage.war
 ---> 8a01751a6ac9
Step 4/5 : RUN bash -c 'touch /DroolsAverage.war'
 ---> Running in 330ed2275089
Removing intermediate container 330ed2275089
 ---> 65cf51ebf28f
Step 5/5 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/DroolsAverage.war"]
 ---> Running in 65357cc5afed
Removing intermediate container 65357cc5afed
 ---> acb6358e4c0e
Successfully built acb6358e4c0e
Successfully tagged drools-average-docker-image:latest

然后运行docker-compose up 会产生以下错误

Recreating droolsaverage_drools-average-docker-app_1_2d763cdbed6c ... done
Starting droolsaverage_db_1_efa205bdb880                          ... done
Attaching to droolsaverage_db_1_efa205bdb880, droolsaverage_drools-average-docker-app_1_2d763cdbed6c
db_1_efa205bdb880            | 2018-11-15 21:54:13.781 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1_efa205bdb880            | 2018-11-15 21:54:13.781 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1_efa205bdb880            | 2018-11-15 21:54:13.795 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1_efa205bdb880            | 2018-11-15 21:54:13.827 UTC [18] LOG:  database system was shut down at 2018-11-15 21:51:44 UTC
db_1_efa205bdb880            | 2018-11-15 21:54:13.837 UTC [1] LOG:  database system is ready to accept connections
drools-average-docker-app_1_2d763cdbed6c | no main manifest attribute, in /DroolsAverage.war
droolsaverage_drools-average-docker-app_1_2d763cdbed6c exited with code 1

我不明白为什么它说我没有主要清单属性?

这是我的Main.java

package com.techgap.droolsaverage.droolsaverage;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;


@SpringBootApplication
@ComponentScan (basePackages = {
        "com.techgap.droolsaverage.controller",
        "com.techgap.droolsaverage.model",
        "com.techgap.droolsaverage.util",
        "com.techgap.droolsaverage.config",
        "com.techgap.droolsaverage.exception"
})
public class Main{

     @SuppressWarnings("unused")
    private static ConfigurableApplicationContext ctx;
    @SuppressWarnings("unused")
    private int maxUploadSizeInMb = 10 * 1024 * 1024; // 10 MB

    public static void main(String[] argv) {

        SpringApplication.run(Main.class, argv);
    }
}

我的docker-compose.ymlDockerfile

version: '3.1'

services:
  drools-average-docker-app:
    image: drools-average-docker-image
    build:
        context: ./
        dockerfile: Dockerfile
    ports:
        - 8080:8080
  db:
    image: postgres:11-alpine
    environment:
      POSTGRES_DB: 'droolsTestDB'
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'postgres'
    ports:
    - "5432:5432"
~

还有 Dockerfile

FROM java:8
VOLUME /tmp
ADD target/DroolsAverage-0.0.1-SNAPSHOT.war DroolsAverage.war
RUN bash -c 'touch /DroolsAverage.war'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/DroolsAverage.war"]

有人能指出正确的方向吗?

【问题讨论】:

    标签: java spring spring-boot docker docker-compose


    【解决方案1】:

    如果您打算将应用程序作为独立应用程序运行,请将其打包为 jar 文件而不是 war 文件。打包为 war 文件意味着您要将其部署到 Tomcat 等 Web 服务器,因此 java -jar 选项将不起作用。

    【讨论】:

    • 感谢您的快速响应!然而,即使包装成罐子,我也会收到同样的错误drools-average-docker-app_1_2d763cdbed6c | no main manifest attribute, in /DroolsAverage.jar
    • 你使用的是maven还是gradle?您使用什么命令来创建 jar 文件?
    • 啊,是的,对不起!我正在使用我运行的 maven mvn clean install
    • 你已经按照这里的所有步骤来使用 spring boot maven 插件:docs.spring.io/spring-boot/docs/current/reference/html/…。假设插件已配置并且您已经声明了正确的打包,您应该能够运行 mvn package 来获取可执行的 jar。
    • :/ 由于某种原因,我把它注释掉了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2019-07-19
    • 2015-12-10
    • 2015-03-14
    • 2019-05-18
    • 1970-01-01
    相关资源
    最近更新 更多