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

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

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

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

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Docker

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

1回答

1622閲覧

EC2内のコンテナの編集を反映させるには?

kodokuna_dancer

総合スコア7

docker-compose

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

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Docker

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2020/07/04 10:37

編集2020/07/04 11:53

悩みポイント

現在、Laravelで作ったアプリをECSにデプロイしようとしている段階です。
データベースにはRDSを使用しようと考えています。
RDSにてデータベースを作成し、EC2からRDSに接続できるところまで完了しました。

次は、EC2内のコンテナ内のlaravelのenvファイルを編集(データベースの接続先をRDSのデータベース先に編集)し「docker-compose up」をするのではないかと考えているのですが、うまく反映されずここで悩んでいます。通常どのようにして対処するのでしょうか?(debian)

試したこと

1 EC2のコンテナに入り、直接編集した

laravelの.envファイルを直接編集したが、反映されなかった。コンテナ内でdocker-compose upをしなければならないと思い、コンテナ内にdockerとdocker-composeをインストールしようと試みるも、それに必要なものがコンテナ内になかったり、

sudo service docker start
エラー mkdir: cannot create directory 'net_cls': Read-only file system

などのエラーと戦い中、、、そもそもこんなこと普通するのか、、、

2 バインドマウントを試みる

2-1 docker-compose.ymlのvolumes

以下のようにdocker-compose.ymlを設定しているのですが、ホスト側でファイルを編集してもEC2のコンテナ内のファイルには反映されません。。。

docker-compose.yml

version: '3' services: intro-app_web: build: . volumes: - ./web:/var/www/html/intro-app/web ports: - 8081:8081 - 3000:3000

2−2 タスク定義でボリューム設定

なので、タスク定義にボリュームの設定という箇所があったので以下のように編集してみましたが、タスクが落ちてしまい、反映もされませんでした。。。

・コンテナの編集欄
![イイメージ説明

・ボリュームの設定
イメージ説明

この2つのマウントの仕方の違いは何なのでしょうか?

補足

ちなみに、プロジェクトフォルダは以下の構成になっています。webフォルダの中にlaravelのファイル群が入っています。
intro-appフォルダ
Dockerfile composer.lock docker-compose.yml install-composer.sh web
composer.json database get-pip.py vendor

一応Dockerfileは以下の通りです。。。

FROM php:7.4.1-fpm COPY install-composer.sh / RUN apt-get update \ && apt-get install -y wget git unzip libpq-dev \ && : 'Install Node.js' \ && curl -sL https://deb.nodesource.com/setup_12.x | bash - \ && apt-get install -y nodejs \ && : 'Install PHP Extensions' \ && docker-php-ext-install -j$(nproc) pdo_pgsql \ && : 'Install Composer' \ && chmod 755 /install-composer.sh \ && /install-composer.sh \ && mv composer.phar /usr/local/bin/composer WORKDIR /var/www/html/intro-app COPY . . CMD ["php","artisan", "serve", "--host", "0.0.0.0", "--port", "8081"]

アドバイスしてくださる方いれば、よろしくお願いします

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

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

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

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

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

guest

回答1

0

ベストアンサー

Amazon ECSはマネージドなコンテナサービスですが
docker-compose.ymlなどがそのまま利用できるというわけではありません.
ECSにおけるdocker-compose.ymlに相当するのはタスク定義ファイル
こちらにコンテナをどのように起動するかを定義して登録・実行する必要があります.

ecs-cliを利用すればdocker-compose.ymlをタスク定義に変換できますが
やはり直接はタスク定義を利用する必要があり,docker-composeコマンドを直接利用することはできません.
どうしてもdocker-composeで直接操作したいのであれば,
ECSは使わず自分でEC2インスタンスを立ててそこでdocker-composeコマンドを実行する必要があります.

投稿2020/07/04 14:50

thaim

総合スコア175

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

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

kodokuna_dancer

2020/07/04 17:30

回答ありがとうございます!感謝します。 そうなのですね。。。 この場合、確かにコンテナ内のコードは直接編集できているのですが、反映されない場合、どこに問題があると考えられるのでしょうか?
thaim

2020/07/04 22:50

laravelについては詳しくないですが環境変数は基本的にアプリ/コンテナが起動時に読み込まれます. dcoker-compose upで読み込まれるのはコンテナが起動することで反映されています. 動作確認という意味ではホストに.envを配置し,そのファイルをマウントとして コンテナを起動するなどすれば反映されると思います.
kodokuna_dancer

2020/07/06 15:27

返信遅くなりました。 丁寧な返信ありがとうございました! 感謝します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問