【问题标题】:Not able to deploy Springboot application AWS Ubuntu instance using AWS CodeDeploy无法使用 AWS CodeDeploy 部署 Springboot 应用程序 AWS Ubuntu 实例
【发布时间】:2020-05-11 22:37:00
【问题描述】:

我有一个 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 command not found

我登录到实例并检查 mvn 命令工作正常,但使用 codedeploy 代理它不工作

我已经设置了路径 ~/.profile 和 ~/.bashrc 文件,但还是不行

GitHub 仓库位置为Repository Link

【问题讨论】:

标签: java amazon-web-services spring-boot continuous-integration aws-code-deploy


【解决方案1】:

codeDeploy 以 root 用户身份执行,因此请尝试检查 root 用户是否安装了 mvn。 和 应用开始: - 位置:start_server.sh 超时:300 运行:根 而不是 ubuntu 以 root 身份运行。

【讨论】:

    【解决方案2】:

    Maven 是一个构建系统。我不建议将其用作部署的一部分。单独构建应用程序(可能在您的笔记本电脑上)并使用 CodeDeploy 复制代码(jar 文件等),并运行一些内务处理(例如启动 apache 服务)。不要在每次部署时都构建应用程序,因为您会看到构建失败会导致部署失败。

    查看错误:mvn command not found

    最好在脚本中指定 mvn 命令的完整路径,例如:

    sudo /bin/mvn clean package

    注意:请确认路径。

    【讨论】:

      【解决方案3】:

      使用 Code Pipeline 创建流程,与 Code Commit 或 Github repo 集成以获取代码。使用 Code Build 创建必要的工件并在 Code Deploy 中使用该工件。 Code Build 可以选择使用必要的工具来创建构建环境,例如 Java Maven Docker。

      【讨论】:

        【解决方案4】:

        我在 EC2 Ubuntu 实例中以 root 用户身份安装了 maven 和代码部署代理,但我仍然收到 mvn command not found

        我登录到实例并尝试检查 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-23
          • 2016-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-06
          • 2018-04-06
          • 2023-03-18
          相关资源
          最近更新 更多