OSS の MAツールである Mutic を動かすことがあり
公式が用意している Docker イメージを使ってローカルマシンでは簡単にセットアップできた.
その後サーバーに載せる際に Amazon ECS を使ってセットアップした後
Mautic コンテナに接続するところまでの手順をまとめておく.
前提
以下の設定は済んでいること前提に Mautic を動作させることにフォーカスする.
- AWS の設定(認証ファイル, EC2 キーペア作成など)
- ecs-cli のインストール
- docker-compose 実行環境
Mautic をローカルマシンで起動
上記のを元に 80 ポートで立ち上がるように修正したのが以下のgist.
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 接続
- AWS コンソールで Amazon ECS を開く
- クラスターを選択
- 対象のクラスター名を選択(今回は mautic)
- ECS インスタンスのタブを選択
- EC2 インスタンスのインスタンスID(i-から始まる文字列)を選択
- おなじみの EC2 の画面でパブリック DNS が特定できる
- 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 を使えるためその後の連携が楽にできる.