2016-11-28 24 views
0

私のアプリケーションディレクトリとドッカーイメージを持つカスタムAMIがあります。私は新しいインスタンスを作成するために起動設定で自動スケールグループを設定しています。私は、アプリケーションを起動するためのユーザーデータスクリプトを持っています。これはコードです:EC2ユーザーデータはスクリプトを実行しますが、アプリケーションは起動しません

#!/bin/bash 

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

スクリプトは実行されますが、アプリケーションは実行されません。私はSSHして手動で動作するアプリを実行することができます。クラウドのinit-Output.logですファイルを見て、私は次のようになっている:私は私のカスタムAMIを作成する前にそれをインストールしているように私は、SSHとき

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

ドッカー-コンが使用可能です。

何か不足していますか?

+0

あなたのインスタンス(ec2-user、ubuntu、adminなど)をSSHしたユーザーがdocker-composeを利用できた可能性がありますが、rootには利用できず、rootはuser-data Amazonが新しいインスタンスをスピンするとき。 $ PATHにdocker-composeのソフトリンクを追加したい場合があります。 – HakRo

+0

ありがとう@HakRou。 'root' '$ PATH'に'/usr/local/bin'が含まれていないのは不思議です。私の2つのオプションは 'export PATH = $ PATH:/ usr/local/bin'をユーザデータに含めるか、代わりに '/ usr/bin'にdocker-composeをインストールしてください。どちらが "ベストプラクティス"であるかわからない –

+0

私はdocker-composeを/ usr/binにインストールするか、単にそのフォルダ内のシンボリックリンクを作成します。それは本当に重要ではありません。 私のコメントが役に立ったら、私はそれを答えに変えます。 – HakRo

答えて

0

ベストプラクティスの質問に関しては関係ありません。どちらの方法でも問題ありません。

しかし、こんにちは。

ブートストラップが異なるセキュリティコンテキスト/シェル環境で動作しているため、それに対応する必要があります。

あなただけのようなだけでなくバイナリファイルへのパス全体を置くことができます:

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

、それがどのようになる参照してください。

0

インスタンスにSSHしたユーザー(ec2-user、ubuntu、adminなど)がdocker-composeを利用していた可能性がありますが、root権限では使用できない可能性があり、root権限は、 Amazonが新しいインスタンスをスピンするときのデータ。

したがって、ルート$ PATHのフォルダの1つにdocker-composeのソフトリンクを追加したい場合は、/usr/binを参考にしてください。

関連する問題