2016-11-28 57 views
0

我有一个自定义AMI,它具有我的应用程序目录和泊坞窗图像。我正在使用启动配置设置Auto Scale Group以创建一个新实例。我有一个用户数据脚本来启动应用程序。这是代码:EC2用户数据运行脚本,但不启动应用程序

#!/bin/bash 

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

该脚本运行,但该应用程序无法运行。我可以通过SSH手动运行应用程序。看着云的init-output.log文件,我得到以下几点:

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

泊坞窗,撰写可当我ssh作为我创建我的自定义AMI之前安装它。

什么我失踪?

+0

docker-compose可能已经提供给您用于SSH实例的用户(如ec2-user,ubuntu或admin),但它可能不适用于root用户,并且root用户与用户数据一起使用当亚马逊旋转一个新的实例。 所以你可能想在你的$ PATH中添加一个docker-compose的软链接。 – HakRo

+0

谢谢@HakRou。 'root'' $ PATH'不包含'/ usr/local/bin'是奇怪的 - 我的两个选择是在用户数据中包含'export PATH = $ PATH:/ usr/local/bin',或者改为在/ usr/bin中安装docker-compose。不知道哪一个更“最佳实践” –

+0

我会在/ usr/bin中安装docker-compose,或者直接在该文件夹中创建一个符号链接。它并不重要。 如果我的评论有帮助,我会把它变成一个答案。 – HakRo

回答

0

关于您的最佳实践问题无关紧要。无论哪种方式就足够了。

HakRou是正确不过。所以你需要满足该

自举是一个不同的安全上下文/ shell环境下运行。

你可以只把整个路径的二进制文件,以及如:

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

,并看到如何继续下去。

0

docker-compose可能已经提供给您用于SSH的用户(例如ec2-user,ubuntu或admin),但它可能不适用于root用户,并且root用户可以使用该用户的权限,当亚马逊旋转新实例时的数据。

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

相关问题