我正在用java (基于spring)构建一个简单的hello world应用程序,我通过管道将其启动到AWS。
buildspec.yml的定义如下:
version: 0.2
phases:
install:
runtime-versions:
java: openjdk8
build:
commands:
- mvn package
artifacts:
files:
- '**/*'对于appspec.yml,如下所示:
version: 0.0
os: linux
files:
- source: target/helloworld-1.0-SNAPSHOT.jar
destination: /tmp
hooks:
ApplicationStart:
- location: codedeploy/ApplicationStart.sh
timeout: 60
runas: root文件代码部署/ApplicationStart.sh:
#!/usr/bin/env bash
JAR_FILE_HOME='/tmp/helloworld-1.0-SNAPSHOT.jar'
java -jar JAR_FILE_HOME奇怪的是,部署失败时会出现以下错误:
脚本位于指定位置:代码部署/ApplicationStart.sh作为用户根运行,退出代码127失败
输出日志:
stderr/opt/codedeploy-agent/deployment-root/5092b759-ecc4-44cb-859a-9823734abc04/d-GVQ6R854B/deployment-archive/codedeploy/ApplicationStart.sh:第9行: java:命令未找到
这似乎非常违背直觉,因为我已经在buildspec.yml中安装了java。我是否需要再次在ApplicationStart脚本中手动安装java,还是做了其他错误的事情?
发布于 2019-07-02 18:48:33
CodeBuild没有与应用程序实例的链接,相反,它只在收到用于构建事件的构件时才创建运行时。
您不需要每次使用appspec.yml安装JAVA。我建议您在EC2实例上安装JAVA运行时,然后创建一个AMI,作为将来使用的参考基映像,或者您可以继续使用具有预先构建环境的Elasticbean茎。
发布于 2020-09-18 19:40:14
另一个答案也提出了这一点,但只是为了澄清:
https://stackoverflow.com/questions/56858417
复制相似问题