つよくなるブログ

その場にとどまるためには、全力で走り続けなければならない

Amazon ECS で Mautic を動かす

OSS の MAツールである Mutic を動かすことがあり
公式が用意している Docker イメージを使ってローカルマシンでは簡単にセットアップできた.

その後サーバーに載せる際に Amazon ECS を使ってセットアップした後
Mautic コンテナに接続するところまでの手順をまとめておく.

前提

以下の設定は済んでいること前提に Mautic を動作させることにフォーカスする.

  • AWS の設定(認証ファイル, EC2 キーペア作成など)
  • ecs-cli のインストール
  • docker-compose 実行環境

Mautic をローカルマシンで起動

github.com

上記のを元に 80 ポートで立ち上がるように修正したのが以下のgist.

gist.github.com

docker-compose.yml として保存して docker-compose up で起動.

http://localhost/ で Mautic が表示される.

続いて Amazon ECS で動かす設定へ.

Amazon ECS で動かす

初期設定

$ ecs-cli configure --region ap-northeast-1 --cluster mautic

--region: ECS を設定するリージョン
--cluster: クラスタ名

今回はクラスタ名を mautic とする.

クラスタ作成

$ ecs-cli up --keypair KEY_NAME --capability-iam --size 1 --instance-type t3.medium

--keypair: 使用する EC2 キーペア
--size: クラスタに登録するインスタンス数
--instance-type: EC2 インスタンスタイプ

t2.micro で試したところメモリ不足のエラーがでたので t3.medium で作成.

INFO[0015] (service mautic) was unable to place a task because no container instance met all of its requirements. 
The closest matching (container-instance xxxxx) has insufficient memory available. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide.

コンテナ起動

$ ecs-cli compose -f docker-compose.yml up

コンテナに接続

Mautic の言語設定を日本語にしたものの, キャッシュが原因で変更されなかったので
コンテナに接続して対応していく.

EC2 の DNS を特定して ssh 接続

  1. AWS コンソールで Amazon ECS を開く
  2. クラスターを選択
  3. 対象のクラスター名を選択(今回は mautic)
  4. ECS インスタンスのタブを選択
  5. EC2 インスタンスのインスタンスID(i-から始まる文字列)を選択
  6. おなじみの EC2 の画面でパブリック DNS が特定できる
  7. ssh接続
$ ssh ec2-user@ec2-xxx.amazonaws.com -i KEY_NAME

Docker コンテナに接続

EC2 の中で Docker コンテナが起動しているので特定して接続する.

$ docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                NAMES
xxx        mautic/mautic                    "/entrypoint.sh apac…"   1 days ago         Up 1 days          0.0.0.0:80->80/tcp   ecs-mautic-1-mautic-xxx
xxx        mysql:5.6                        "docker-entrypoint.s…"   1 days ago         Up 1 days          3306/tcp             ecs-mautic-1-mauticdb-xxx
xxx        amazon/amazon-ecs-agent:latest   "/agent"                 1 days ago         Up 1 days                               ecs-agent

mautic, mysql, amazon-ecs-agent の 3つのコンテンが立ち上がっている.

mautic の NAMES に対して以下のコマンドを実行すると
mautic が動いているコンテナに接続できる.

$ docker exec -it ecs-mautic-1-mautic-xxx bash

/var/www/html/app/cache/prod 配下のキャッシュを削除して
設定が反映されていることが確認できた.

まとめ

  • Mautic を Amazon ECS を使ってサーバに載せた.
  • Mautic のメール設定は Amazon SES を使えるためその後の連携が楽にできる.