【发布时间】:2021-12-14 23:24:38
【问题描述】:
尝试使用 ELB 容器部署基于 Play 框架的应用程序
最近,AWS 似乎对 ELB 的工作方式进行了更改,就像我们之前所做的那样,没有问题。
我们目前得到的错误是:
2021/12/14 23:00:15.705423 [INFO] Executing instruction: CheckProcfileForJavaApplication
2021/12/14 23:00:15.705468 [ERROR] An error occurred during execution of command [app-deploy] - [CheckProcfileForJavaApplication]. Stop running the command. Error: there is no Procfile and no .jar file at root level of your source bundle
2021/12/14 23:00:15.705474 [INFO] Executing cleanup logic
2021/12/14 23:00:15.705598 [INFO] CommandService Response: {"status":"FAILURE","api_version":"1.0","results":[{"status":"FAILURE","msg":"Engine execution has encountered an error.","returncode":1,"events":[{"msg":"Instance deployment failed. For details, see 'eb-engine.log'.","timestamp":1639522815,"severity":"ERROR"}]}]}
如果这是实际问题,我当然不会在这里
# cd /var/app/staging/server-xxxxxxxxxxx/
# ls -l
total 16
-rw-r--r-- 1 webapp webapp 135 Dec 14 20:39 Procfile
drwxr-xr-x 2 webapp webapp 82 Dec 14 22:21 bin
drwxr-xr-x 2 webapp webapp 113 Dec 14 22:21 conf
drwxr-xr-x 2 webapp webapp 8192 Dec 14 22:21 lib
drwxr-xr-x 3 webapp webapp 17 Dec 14 22:21 share
所以 Procfile 存在
嗯,它有效吗?
让我们检查一下:
# cat Procfile
web: bin/server -v -J-Xms512M -J-Xmx2048m -J-server -Dhttp.port=5000 -Dhttps.port=8443 -Dconfig.resource=application.conf
看起来很正常——但它真的有效吗?
简短的回答是肯定的——如果我复制并粘贴该命令(当然减去“web:”前缀)系统就会出现没有任何问题(但 ELB 仍然没有意识到......)
我尝试了一些命令变体,认为它可能与更严格的正则表达式 ^[A-Za-z0-9_-]+:\s*[^\s].*$ 的 yaml 格式有关(来源:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html)
web: bin/server
web: ./bin/server
web: bin/server
web: ./bin/server
web:bin/server
web:./bin/server
没有区别(在没有或没有前导 ./ btw 的情况下手动启动时两者都有效)
不确定我将如何前进?
我们如何找到真正的问题,以便我们有机会解决它?
是的——上面的初始跟踪已经是eb-engine.log的输出
使用(如果这是相关的)
- Coretto Java 11
- 播放 2.8.8
- Scala 2.13.6
- SBT 1.5.2
将回答任何有助于改进此问题的相关问题以及解决问题的任何机会。 我挖掘的大多数 Google 搜索都与其他环境相关,只是缺少 Procfile...
【问题讨论】:
-
我暗自怀疑编写
CheckProcfileForJavaApplication例程的人会在Procifle 中的那一行字面上检查Java。当然,Play Framework 使用了一个中间启动器,该启动器随后调用 Java。我们的 GitHub 日志显示我们至少从 2015 年中期开始就成功使用了上述技术,所以这对 AWS 来说是“新”的。 -
也发布到 Re: Post repost.aws/questions/QUSfLfdAlmThqC6dg35Y7JmQ/…
-
从字面上理解最初的错误:
Error: there is no Procfile AND no .jar file at root level我创建了一个dummy.jar并将其放在 dist[ribution] 文件夹的根目录下,以防万一我们越过了目标。再次没有这样的运气...... -
我已经制定了一个解决方法,并在我通过一些正常的 ELB 操作确认它运行稳定后将其发布。
标签: java amazon-web-services scala playframework amazon-elb