AWSはネットワークが独学難しく、半ば挫折気味でした。
AWSだと「Hello World!」を出すまでが非常に難しく(VPC、サブネット、ルーティングetc)まずは手を動かしてみるのにいい題材はないだろうか?
...と考えていたところ、ECSでWordPressをデプロイしてみるのが非常に簡単でオススメだということで、実際にやってみました。
必要なもの
-
docker for mac
https://docs.docker.com/docker-for-mac/install/ -
docker-compose
docker for macに同梱 -
AWSアカウント
https://aws.amazon.com/jp/?nc2=h_lg -
ecs cli
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ECS_CLI_installation.html
少し複雑なので、Homebrew(https://brew.sh/) を使って下記のようにインストール可能です。(AWSの認証情報必須です)
dockerコンテナをローカルで立ち上げてみる
1. CLI上でdocker-composeファイル作成
(とりあえずディレクトリ直下にdocker-compose.yml作成いただければOKです)
-
cd path/to/your/directory
プロジェクトを作成するディレクトリへ移動してください -
mkdir {フォルダ名} && cd {フォルダ名}
フォルダを作成し、そのディレクトリへ移動します -
touch docker-compose.yml
doccker-composeという複数コンテナからなるサービスを実行するための手順書(のようなもの)を作成します。 vi docker-compose.yml
-
i
インサートモード起動 - ▼をコピペ
docker-compose.yml
version: '2'
services:
wordpress:
image: wordpress
mem_limit: 268435456
ports:
- "80:80"
links:
- mysql
mysql:
image: mysql:5.7.25
mem_limit: 268435456
environment:
MYSQL_ROOT_PASSWORD: password
-
esc
インサートモード終了 -
:wqを押してEnter
これでファイルを保存しviを終了します
2. docker-composeファイルのビルド
-
docker-compose up -d
先ほど作成したファイルがあるディレクトリ直下で実行します -
docker ps
mysql:5.7.25とwordpressというイメージが作成されているのを確認します。 -
ブラウザでhttp://localhostへアクセス
自動的に次のような画面にリダイレクトされると成功です。
AWS ECS上でdockerコンテナを実行する
(参考) Homebrewによるecs-cliのインストール
-
パッケージのインストール
brew install amazon-ecs-cli
-
初回インストールなのでリージョン/クラスター設定
ecs-cli configure --region ap-northeast-1 --cluster {好きなクラスター名}
リージョンは日本を示すap-northeast-1
を。
クラスターとはかなりざっくり言えば、dockerコンテナをひとまとめにした大きな括りです。ここでは「wordpress-example」とかで大丈夫です。
実際にECS上にコンテナをデプロイする
先ほどのdocker-compose.ymlの存在するルートディレクトリから実行します。
-
新規AWS ECSクラスターを作成する
ecs-cli up --capability-iam --size 2 --instance-type t2.micro
インスタンスタイプはお好みですが、最小限のt2.micro
を選択推奨です。
--capability-iam
は、新規でIAMロールを作成することを示唆します。
(https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cmd-ecs-cli-up.html)
このコマンドを実行することで、新規CloudFormationスタックが作成されます。 -
成功したら...
ecs-cli ps
こちらのコマンドをどうぞ。
すると下記のような出力がされるはず。
Name State Ports TaskDefinition Health
こちらのPorts欄にある({IPアドレス}->80/tcpの){IPアドレス}をコピペして、ブラウザで開けると、ローカルと同じような画面が出てきます。
お疲れ様でした!
学んだことなど
AWSコンソールから、ECSクラスターを作成してみても、いっこうにうまくいかなかったのですが、CLIだとここまで簡単にデプロイできるのか!と思いました。
このデプロイをやるだけでも、AWS全くわかってない勢としては、非常に苦戦しましたので、ぜひ参考にしてみていただけますと!