我有一个Spring Boot应用程序,无法使用AWS Code Deploy部署到AWS Ubuntu实例
这是appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /opt/ubuntu/server
permissions:
- object: /
pattern: "**"
owner: ubuntu
group: ubuntu
hooks:
ApplicationStop:
- location: stop_server.sh
timeout: 20
runas: root
ApplicationStart:
- location: start_server.sh
timeout: 300
runas: ubuntu
stop_server.sh文件
#!/usr/bin/env bash
# Kill Java process
# Determine the pid
PID=`ps -C java -o pid=`
kill -9 $PID
start_srver.sh文件
#!/usr/bin/env bash
cd /opt/ubuntu/server
rm -rf target/*
sudo mvn clean package
sudo mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8080' > /dev/null 2> /dev/null < /dev/null &
CodeDeploy卡在安装阶段,我得到的错误是找不到mvn命令
我登录到实例并检查了mvn命令是否工作正常,但是使用codedeploy代理时,它无法正常工作
我已经设置了〜/ .profile和〜/ .bashrc文件的路径,但仍然无法正常工作
GitHub的存储库位置为Repository Link
答案 0 :(得分:0)
codeDeploy以root用户身份执行,因此请尝试检查root用户是否已安装mvn。 和 ApplicationStart: -位置:start_server.sh 超时:300 符文:根 而不是ubuntu以root身份运行。
答案 1 :(得分:0)
Maven是一个构建系统。我不建议将其用作部署的一部分。单独构建应用程序(也许在笔记本电脑上),然后使用CodeDeploy复制代码(jar文件等),并运行一些内部管理流程(例如,启动apache服务)。不要在每个部署上都构建应用程序,因为您会看到构建失败将导致部署失败。
查看错误:找不到mvn命令
最好在脚本中指定mvn命令的完整路径,例如:
sudo / bin / mvn清洁程序包
注意:请确认路径。
答案 2 :(得分:0)
使用Code Pipeline创建流程,与Code Commit或Github repo集成以获取代码。使用代码构建来创建必要的构件,并在代码部署中使用构件。代码构建具有用于使用必要工具(例如Java Maven Docker)创建构建环境的选项。
答案 3 :(得分:0)
我在EC2 Ubuntu实例中以root用户身份安装了maven和代码部署代理,但仍然得到 mvn命令。
我登录到实例并尝试检查mvn命令是否正常运行,但是我无法理解为什么mvn命令不能与代码部署过程一起使用。
需要帮助
这是 appspec.yml 文件
version: 0.0
os: linux
files:
- source: /
destination: /opt/root/server
permissions:
- object: /
pattern: "**"
owner: root
group: root
hooks:
ApplicationStop:
- location: scripts/stop_server.sh
timeout: 60
runas: root
ApplicationStart:
- location: scripts/start_server.sh
timeout: 60
runas: root
start_server.sh文件
mvn clean package
mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8080' > /dev/null 2> /dev/null < /dev/null &
stop_server.sh
#!/usr/bin/env bash
# Kill Java process
# Determine the pid
echo "killing process starts"
PID=`ps -C java -o pid=`
if [ -n "$PID" ]; then
echo "killing process"
kill -9 $PID
else
echo "empty"
fi
cd /opt
rm -rf root