[英]Not able to deploy Springboot application AWS Ubuntu instance using AWS CodeDeploy
我有一個 Spring 啟動應用程序,我無法使用 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 文件,但仍然無法正常工作
codeDeploy 以 root 用戶身份執行,因此請嘗試檢查 root 用戶是否安裝了 mvn。 和 ApplicationStart: - location: start_server.sh timeout: 300 runas: root 而不是 ubuntu 以 root 身份運行。
Maven 是一個構建系統。 我不建議將其用作部署的一部分。 單獨構建應用程序(可能在您的筆記本電腦上)並使用 CodeDeploy 復制代碼(jar 文件等),並運行一些內務處理(例如啟動 apache 服務)。 不要在每次部署時構建您的應用程序,因為您可以看到構建失敗將導致部署失敗。
查看錯誤:未找到 mvn 命令
最好在腳本中指定 mvn 命令的完整路徑,例如:
sudo /bin/mvn 清理包
注意:請確認路徑。
使用 Code Pipeline 創建流程,與 Code Commit 或 Github repo 集成以獲取代碼。 使用 Code Build 創建必要的工件並在 Code Deploy 中使用該工件。 Code Build 可以選擇使用必要的工具創建構建環境,例如 Java Maven Docker。
我在 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 &
停止服務器.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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.