使用AWS CodePipeline部署Spring Boot+MySQL应用到Elastic Beanstalk报错如何解决?
问题根因
从eb-engine.log的错误日志可以明确,Elastic Beanstalk的Java Corretto 11平台要求部署包的根目录下要么存在Procfile启动配置文件,要么存在可执行jar包,你当前的构建产物包中jar包位于target/子目录下,不符合平台要求,所以部署失败。
可行解决方案
方案1:调整buildspec.yml配置,将jar包输出到构件根目录
修改buildspec.yml的artifacts段,添加discard-paths: yes配置,去掉jar包的路径前缀,直接放到构件包的根目录:
version: 0.2 phases: install: runtime-versions: java: corretto11 commands: - echo install pre_build: commands: - echo pre_build build: commands: - mvn package - echo build post_build: commands: - echo post_build artifacts: files: - target/course_reviews_backend-0.0.1-SNAPSHOT.jar discard-paths: yes # 新增这行配置,忽略文件的原始路径,直接输出到构件包根目录
改完重新提交代码触发流水线即可,Elastic Beanstalk会自动识别根目录下的jar包启动应用。
方案2:添加Procfile指定jar包路径
在项目根目录新建名为Procfile的文件,内容如下:
web: java -jar target/course_reviews_backend-0.0.1-SNAPSHOT.jar
然后修改buildspec.yml的artifacts段,把Procfile也加入构建产物:
artifacts: files: - target/course_reviews_backend-0.0.1-SNAPSHOT.jar - Procfile
提交代码重新触发流水线即可,Elastic Beanstalk会根据Procfile的配置找到对应路径的jar包启动应用。
内容的提问来源于stack exchange,提问作者Bhavin Panchani
相关产品推荐
相关产品推荐

