我试图将.ebextensions文件夹添加到我的jar的根级别,以部署到AWS弹性beanstalk。
我的文件夹结构是:
main:
--src
--resources
--.ebextensions
当我构建jar时,我的.ebextensions
被放置在我的目标的类路径上,因此在部署时不会被Elastic Beanstalk接收。
的pom.xml
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>false</addResources>
</configuration>
</plugin>
我如何构建以便ELB获取ebextensions?
答案 0 :(得分:10)
这对我有用,是我发现解决这个问题的最干净的方式( 在项目的根目录中添加.ebextensions,并在插件部分的末尾添加此代码段: 这个插件使用ant来解压弹簧引导生成的最终jar,使用相同的名称再次复制root和zip(jar)中的.ebextensions。经过测试并在生产中工作:) 适用于Spring 1.5.3.RELEASE <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>prepare</id>
<phase>package</phase>
<configuration>
<tasks>
<unzip src="${project.build.directory}/${project.build.finalName}.jar" dest="${project.build.directory}/${project.build.finalName}" />
<copy todir="${project.build.directory}/${project.build.finalName}/" overwrite="false">
<fileset dir="./" includes=".ebextensions/**"/>
</copy>
<zip compress="false" destfile="${project.build.directory}/${project.build.finalName}.jar" basedir="${project.build.directory}/${project.build.finalName}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
答案 1 :(得分:1)
我遇到了同样的问题,在Andy建议为我工作的时候将.ebextensions
移到了jar旁边,直接将.conf
文件添加到所需的目录中,如下所示:
答案 2 :(得分:1)
对于那些使用Gradle的用户来说,这是需要将它们添加到build.gradle以便将.ebextensions东西添加到jar的根中的原因。
假定.ebextensions目录和内容位于项目的根目录中。
普通Java应用程序:
jar {
from(".") {
include ".ebextensions/**"
}
}
Spring Boot应用程序:
bootJar {
from(".") {
include ".ebextensions/**"
}
}
Spring Boot的情况与普通Java情况略有不同,因为使用Spring Boot的是实际构造jar的Spring Boot Gradle插件-它使用特殊的“ bootJar”任务代替了标准Java插件“ jar” ”任务。
我认为对于Maven构建,Javier的答案是最干净的方法。对我来说,这说明了在修改“标准”构建时Gradle over Maven的灵活性。
答案 3 :(得分:0)
对于所有可能为此感到困扰的人。在项目的根目录中有一个如下所示的目录:.ebextentions / nginx / conf.d / proxy.conf在proxy.conf文件中,您放置此client_max_body_size 50M;正是这样。现在,当您将项目上传到Elastic beantalk时,要做的是创建一个压缩文件夹,然后将目标文件夹和.ebextensions目录复制到其中,这称为源包。现在,您可以将压缩文件夹(捆绑包)上传到弹性beantalk。
答案 4 :(得分:0)
这是我的做法:
跑app-0.0.1-SNAPSHOT.jar
生成.ebextensions/nginx/conf.d/proxy.conf
之后,我在具有client_max_body_size 25M;
的根项目路径上创建了cp target/app-0.0.1-SNAPSHOT.jar . && zip -r app-new.zip .ebextensions/ app-0.0.1-SNAPSHOT.jar
-在我的情况下是增加最大上传大小。
对跑步者使用Github Actions和ubuntu-latest-zip命令是开箱即用的,我使用此命令来完成
app-new.zip
基本上p[0]-p[1]
是我要上传到ElasticBeanstalk的文件