【问题标题】:EC2 User Data runs script but does not boot up applicationEC2 用户数据运行脚本但不启动应用程序
【发布时间】:2016-11-29 17:18:24
【问题描述】:

我有一个自定义 AMI,其中包含我的应用程序目录和 docker 映像。我正在使用启动配置设置 Auto Scale Group 以创建新实例。我有一个用户数据脚本来启动应用程序。这是代码:

#!/bin/bash

docker-compose -f /home/ec2-user/app/docker-compose.yaml up -d app

脚本运行,但应用程序未运行。我可以手动运行 SSH 并运行该应用程序。查看 cloud-init-output.log 文件,我得到以下信息:

/var/lib/cloud/instance/scripts/part-001: line 4: docker-compose: command not found

当我在创建自定义 AMI 之前安装 SSH 时可以使用 Docker-compose。

我缺少什么吗?

【问题讨论】:

  • docker-compose 可能对您用来通过 SSH 连接您的实例的用户(如 ec2-user、ubuntu 或 admin)可用,但它可能对 root 不可用,而 root 是唯一的当 Amazon 启动新实例时与用户数据一起使用。所以你可能想在你的 $PATH 中添加一个 docker-compose 的软链接。
  • 谢谢@HakRou。奇怪的是 root $PATH 不包含 /usr/local/bin - 我的两个选项是在用户数据中包含 export PATH=$PATH:/usr/local/bin,或者在 /usr/bin 中安装 docker-compose。不确定哪一个更“最佳实践”
  • 我会在 /usr/bin 中安装 docker-compose,或者只是在该文件夹中创建一个指向它的符号链接。这并不重要。如果我的评论有帮助,我会把它变成答案。

标签: docker amazon-ec2


【解决方案1】:

与您的最佳实践问题无关。无论哪种方式都足够了。

HakRou 是对的。

引导带在不同的安全上下文/外壳环境下运行,因此您需要满足这一点。

您也可以将整个路径放入二进制文件,例如:

/usr/local/bin/docker-compose -f /home/ec2-user/app/docker-compose.yaml up -d app 

看看情况如何。

【讨论】:

    【解决方案2】:

    docker-compose 可能对您用来通过 SSH 连接到您的实例的用户(如 ec2-user、ubuntu 或 admin)可用,但它可能对 root 不可用,而 root 是与 user-data 一起使用的用户当亚马逊旋转一个新实例时。

    因此,您可能希望在根 $PATH 中的一个文件夹中添加 docker-compose 的软链接,例如 /usr/bin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-10
      • 2022-01-23
      • 1970-01-01
      • 2019-11-21
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      相关资源
      最近更新 更多