質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.50%

CodeDeployでdocker-composeを実行しようとした際にエラーが出ました

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,228

score 5

前提・実現したいこと

現在、ポートフォリオ作成のための掲示板アプリのようなものを製作しています。
先日まではCloud9上で開発を行なっていたのですが、環境構築の勉強と色んな技術に触れてみたいと思い、Dockerを用いてローカル環境での開発に取り組みはじめました。

・Linux/HTML/CSS/Ruby/Ruby on Rails/SQL/Git等は学習済みです
・Railsを使ったポートフォリオ作成に取り掛かって2ヶ月目です

発生している問題・エラーメッセージ

現在AWSのCodeDeployを用いて、EC2のインスタンスにRailsアプリケーションをデプロイできるように取り組んでおります。
appspec.ymlで指定したファイルにあるスクリプトを実行してdocker-composeコマンドを実行しようとしていたのですが以下のようなエラーが出てdocker-composeコマンドを実行することが出来ませんでした。色々調査をしてみましたが原因が分からないためアドバイスを頂けないでしょうか。以下がCodeDeploy上のエラーメッセージです。

エラーコード
ScriptFailed
スクリプト名
scripts/before.sh
メッセージ
Script at specified location: scripts/before.sh run as user ec2-user failed with exit code 127
LifecycleEvent - BeforeInstall
Script - scripts/before.sh
[stderr]/opt/codedeploy-agent/deployment-root/c29b02a2-728e-4a9f-a173-34e0b13b6951/d-5IW8N44J0/deployment-archive/scripts/before.sh: line 3: docker-compose: command not found

試したこと・追加情報

・EC2のインスタンスにDockerとdocker-composeはインストールされていて、自分が接続してdocker-composeコマンドを実行する分には問題なく動きます。
・権限の問題かと考えsudo usermod -a -G docker ec2-userは試しましたが変化はありませんでした

appspec.yml

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/MyApp
permissions:
    - object:  /var/www/MyApp
      pattern: "**"
      mode: 775
hooks:
  BeforeInstall:
    - location: scripts/before.sh
      timeout: 300
      runas: ec2-user
  AfterInstall:
    - location: scripts/after.sh
      timeout: 300
      runas: ec2-user

before.sh

#!/bin/bash
cd /var/www/MyApp
docker-compose down
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yu_1985

    2019/11/15 11:50

    Docker及びDocker Composeはどのようにしてインストールしましたか?

    キャンセル

回答 1

check解決した方法

0

docker-composeコマンドがCommand not foundになる事には変わらないのですが、

$ which docker-compose
/usr/local/bin/docker-compose

となるので、before.shを以下のように直接指定すれば問題なく動作しました。

before.sh

bin/bash
cd /var/www/MyApp
/usr/local/bin/docker-compose down

・普段docker-composeコマンドを使う分には問題ない
・.shの字数が多少多くなっても気にならない
ので解決とします。コメントくださってありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る