🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2464閲覧

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

Arly3

総合スコア5

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2019/11/14 09:46

編集2019/11/14 09:50

前提・実現したいこと

現在、ポートフォリオ作成のための掲示板アプリのようなものを製作しています。
先日までは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

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2019/11/15 02:50

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

回答1

0

自己解決

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

Terminal

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

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

before.sh

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

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

投稿2019/11/16 09:49

Arly3

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問