无法将Spring Boot的war包部署到Elastic Beanstalk

6
我正在尝试将一个在本地工作的Spring Boot应用程序部署到EB上,但它似乎在pom文件中出了问题,但我无法缩小范围。运行Tomcat8,Java 8。我已经能够部署一个更基本的版本,其中依赖项被剥离,但这个版本却无法移动。
包括我的eb-activity.log和pom.xml
我在eb-activity中得到的具体错误是:
6813 extra bytes at beginning or within zipfile
    (attempting to process anyway)

我的eb-activity.log的一部分如下:

[2016-11-28T21:59:36.320Z] INFO  [1738]  - [Initialization] : Starting activity...
  ....
  Running preinit
  + preinit
  ++ /opt/elasticbeanstalk/bin/get-config container -k tomcat_version
  + TOMCAT_VERSION=8
  + TOMCAT_NAME=tomcat8
  + TOMCAT_HOME=/usr/share/tomcat8
  + TOMCAT_CONF_HOME=/etc/tomcat8
  + SET_LIMIT_SH=/etc/elasticbeanstalk/set-ulimit.sh
  + echo 'Patching Tomcat 8 startup scripts'
  Patching Tomcat 8 startup scripts
  + '[' -f /opt/elasticbeanstalk/containerfiles/tomcat-elasticbeanstalk ']'
  + echo 'Installing tomcat-elasticbeanstalk script'
  Installing tomcat-elasticbeanstalk script
  + /bin/mv /opt/elasticbeanstalk/containerfiles/tomcat-elasticbeanstalk /usr/sbin
  + /bin/chown root:root /usr/sbin/tomcat-elasticbeanstalk
  + /bin/chmod 755 /usr/sbin/tomcat-elasticbeanstalk
  + echo 'Fixing Tomcat 8 init.d script'
  Fixing Tomcat 8 init.d script
  + /bin/sed -i -e 's/\/usr\/sbin\/tomcat8/\/usr\/sbin\/tomcat-elasticbeanstalk/g' /etc/init.d/tomcat8
  + grep -q /etc/elasticbeanstalk/set-ulimit.sh
  + cat /etc/init.d/tomcat8
  + sed -i '/function start() {/a \ \ \ if [ -f /etc/elasticbeanstalk/set-ulimit.sh ]; then . /etc/elasticbeanstalk/set-ulimit.sh; fi' /etc/init.d/tomcat8
  + echo 'Adding X-Forwarded-Proto valve'
  Adding X-Forwarded-Proto valve
  + /bin/sed -i -e '/<\/Host>/ i\
      <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto" internalProxies="10\\.\\d+\\.\\d+\\.\\d+|192\\.168\\.\\d+\\.\\d+|169\\.254\\.\\d+\\.\\d+|127\\.\\d+\\.\\d+\\.\\d+|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d+\\.\\d+" \/>
  ' /etc/tomcat8/server.xml
  + echo 'Setting UTF-8 support'
  Setting UTF-8 support
  + grep -q 'Elastic Beanstalk' /etc/tomcat8/server.xml
  + sed -i '1 a\<!-- Elastic Beanstalk Maintained -->' /etc/tomcat8/server.xml
  + sed -i 's/<Connector port=\"8080\" protocol=\"HTTP\/1.1\"/&\n               URIEncoding="UTF-8"/g' /etc/tomcat8/server.xml
  + ln -sf /usr/share/java/apache-commons-pool.jar /usr/share/tomcat8/lib/
[2016-11-28T21:59:50.212Z] INFO  [1738]  - [Initialization/PreInitStage0/PreInitHook/03processmgrsetup.sh] : Starting activity...
[2016-11-28T21:59:50.479Z] INFO  [1738]  - [Initialization/PreInitStage0/PreInitHook/03processmgrsetup.sh] : Completed activity. Result:
  ++ /opt/elasticbeanstalk/bin/get-config container -k tomcat_version
  + TOMCAT_VERSION=8
  + MONIT_TOMCAT_CONF=monit-tomcat8.conf
  + /bin/cp -f /opt/elasticbeanstalk/containerfiles/monit-tomcat8.conf /etc/monit.d/
  + chmod 0600 /etc/monit.d/monit-tomcat8.conf
[2016-11-28T21:59:50.479Z] INFO  [1738]  - [Initialization/PreInitStage0/PreInitHook/03setup_httpd_logging.sh] : Starting activity...
[2016-11-28T21:59:50.491Z] INFO  [1738]  - [Initialization/PreInitStage0/PreInitHook/03setup_httpd_logging.sh] : Completed activity.
[2016-11-28T21:59:50.492Z] INFO  [1738]  - [Initialization/PreInitStage0/PreInitHook] : Completed activity. Result:
  Successfully execute hooks in directory /opt/elasticbeanstalk/hooks/preinit.
[2016-11-28T21:59:50.492Z] INFO  [1738]  - [Initialization/PreInitStage0] : Completed activity. Result:
  Initialization - Command CMD-PreInit stage 0 completed
[2016-11-28T21:59:50.492Z] INFO  [1738]  - [Initialization/AddonsAfter] : Starting activity...
[2016-11-28T21:59:50.492Z] INFO  [1738]  - [Initialization/AddonsAfter] : Completed activity.
[2016-11-28T21:59:50.492Z] INFO  [1738]  - [Initialization] : Completed activity. Result:
  Initialization - Command CMD-PreInit succeeded
[2016-11-28T22:00:27.282Z] INFO  [1959]  - [Application deployment tester-1.1.2@1] : Starting activity...
[2016-11-28T22:00:27.282Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/AddonsBefore] : Starting activity...
[2016-11-28T22:00:27.282Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/AddonsBefore] : Completed activity.
[2016-11-28T22:00:27.701Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0] : Starting activity...
[2016-11-28T22:00:27.701Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/HealthdLogRotation] : Starting activity...
[2016-11-28T22:00:27.713Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/HealthdLogRotation] : Completed activity. Result:
  ["/etc/cron.hourly/cron.logrotate.elasticbeanstalk.healthd.conf"]
[2016-11-28T22:00:27.713Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/HealthdHTTPDLogging] : Starting activity...
[2016-11-28T22:00:27.714Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/HealthdHTTPDLogging] : Completed activity.
[2016-11-28T22:00:27.715Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/HealthdNginxLogging] : Starting activity...
[2016-11-28T22:00:27.715Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/HealthdNginxLogging] : Completed activity.
[2016-11-28T22:00:27.715Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/EbExtensionPreBuild] : Starting activity...
[2016-11-28T22:00:28.178Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/EbExtensionPreBuild/Infra-EmbeddedPreBuild] : Starting activity...
[2016-11-28T22:00:28.179Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/EbExtensionPreBuild/Infra-EmbeddedPreBuild] : Completed activity.
[2016-11-28T22:00:28.214Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/EbExtensionPreBuild] : Completed activity.
[2016-11-28T22:00:28.215Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/AppDeployPreHook] : Starting activity...
[2016-11-28T22:00:28.215Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/AppDeployPreHook/01clean.sh] : Starting activity...
[2016-11-28T22:00:28.476Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/AppDeployPreHook/01clean.sh] : Completed activity. Result:
  ++ /opt/elasticbeanstalk/bin/get-config container -k app_staging_dir
  + EB_APP_STAGING_DIR=/tmp/deployment/application/ROOT
  + rm -rf /tmp/deployment/application/ROOT
  + mkdir -p /tmp/deployment/application/ROOT
[2016-11-28T22:00:28.477Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/AppDeployPreHook/02unzip.sh] : Starting activity...
[2016-11-28T22:00:29.351Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/AppDeployPreHook/02unzip.sh] : Activity execution failed, because: ++ /opt/elasticbeanstalk/bin/get-config container -k app_staging_dir
  + EB_APP_STAGING_DIR=/tmp/deployment/application/ROOT
  ++ /opt/elasticbeanstalk/bin/get-config container -k source_bundle
  + EB_SOURCE_BUNDLE=/opt/elasticbeanstalk/deploy/appsource/source_bundle
  + /usr/bin/unzip -o -d /tmp/deployment/application/ROOT /opt/elasticbeanstalk/deploy/appsource/source_bundle
  Archive:  /opt/elasticbeanstalk/deploy/appsource/source_bundle
  warning [/opt/elasticbeanstalk/deploy/appsource/source_bundle]:  6813 extra bytes at beginning or within zipfile
    (attempting to process anyway)
     ....
     creating: /tmp/deployment/application/ROOT/org/springframework/boot/loader/util/
    inflating: /tmp/deployment/application/ROOT/org/springframework/boot/loader/util/SystemPropertyUtils.class  
    inflating: /tmp/deployment/application/ROOT/org/springframework/boot/loader/util/AsciiBytes.class   (Executor::NonZeroExitStatus)


[2016-11-28T22:00:29.352Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/AppDeployPreHook/02unzip.sh] : Activity failed.
[2016-11-28T22:00:29.352Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0/AppDeployPreHook] : Activity failed.
[2016-11-28T22:00:29.352Z] INFO  [1959]  - [Application deployment tester-1.1.2@1/StartupStage0] : Activity failed.
[2016-11-28T22:00:29.354Z] INFO  [1959]  - [Application deployment tester-1.1.2@1] : Completed activity. Result:
  Application deployment - Command CMD-Startup failed
....

我的pom文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.core</groupId>
<artifactId>tester</artifactId>
<version>${project.version}</version>
<packaging>war</packaging>

<name>tester</name>
<description>Testing Spring Boot on EB</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.9.BUILD-SNAPSHOT</version>
    <relativePath/>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <apache-commons.version>3.0</apache-commons.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-ws</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${apache-commons.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4-1206-jdbc42</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
        </plugin>
        <!-- tag::wsdl[] -->
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.12.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <schemaLanguage>WSDL</schemaLanguage>
                <generatePackage>integration.wsdl</generatePackage>
                <schemas>
                    <schema>
                        <url>https://www.soaplayeroverhere.com?wsdl</url>
                    </schema>
                </schemas>
            </configuration>
        </plugin>
        <!-- end::wsdl[] -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <compilerArgument>-parameters</compilerArgument>
            </configuration>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

这可能是什么?

1
看起来似乎与压缩/解压文件有关 (http://unix.stackexchange.com/questions/115825/extra-bytes-error-when-unzipping-a-file)。你是使用Maven创建war文件吗? - Darshan Mehta
没错!我正在使用mvn clean package来生成它。 - albaba
1
我遇到了相同的问题,无法解压WAR文件。UGA MUGA - Booyah
3个回答

3
springBoot {
    mainClass = ''
    executable = false
    buildInfo()
}

为了使其在Beanstalk上正常工作,需要在build.gradle中将executable设置为false。


2

对于Maven,我需要添加

<configuration>
   <mainClass>${mainClass}</mainClass>
   <addResources>true</addResources>
    **<executable>false</executable>**
</configuration>

在POM中


0

将存档文件设为非可执行。

对于Spring Boot 2(Gradle),请删除:

bootJar {
    launchScript()
}

tasks.getByName<BootJar>("bootJar") {
    launchScript()
}

参考

对于Spring Boot 1(Gradle),请设置springBoot.executable

springBoot {
    executable = false
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接