アリババクラウドのスターターパッケージでDockerを使用してMagentoのEコマースウェブサイトを構築する

このチュートリアルでは、**Alibaba Cloud**のStarter Packageサービスを使って**Docker**を使って**Magento**のeコマースサイトを設定する方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/build-an-e-commerce-website-using-magento-and-docker-on-alibaba-cloud-starter-package_595459)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#1. なぜアリババのクラウドでeコマースサイトを構築するのか
- Alibaba Cloud上にEコマースプラットフォームを構築すると、以下のようなメリットがあります。

- Alibaba Cloudは、毎日何百万人もの顧客にサービスを提供している世界No.1のeコマースサイト[Alibaba.com](https://www.alibaba.com/?spm=a2c65.11461447.0.0.40ca49d3dsWfTL)をサポートしています。
アリババクラウドは、世界200以上の国と地域に61のアベイラビリティゾーンを持つプレミアクラウドサービスです。これは、Alibaba Cloudを利用することで、顧客が要求するデータを最も近い利用可能なポイントから配信し、待ち時間の問題を解消することを意味しています。
- Alibaba Cloudは、[CSA-STAR](https://www.alibabacloud.com/ja/trust-center/csa-star)、[SOC](https://www.alibabacloud.com/ja/trust-center/soc)、[PCI/DSS](https://www.alibabacloud.com/ja/trust-center/pci-dss)、[GDPR](https://www.alibabacloud.com/ja/trust-center/gdpr)など、世界中のデータセンターに関連するいくつかの国際認証をサポートしています。このような認証により、Alibaba Cloud上で処理されるデータは、データセキュリティの国際基準のコンプライアンス要件を満たす最新のツールによって常に安全に保護されていることが保証されています。
- Alibaba Cloudは、[Air Asia](https://www.alibabacloud.com/ja/customers/air-asia)、[Ford](https://www.alibabacloud.com/ja/customers/ford)など、世界的に認知されている多くの企業と提携し、クライアントに優れたサービスを提供しています。

#2. 環境を整える
Eコマースサイトを構築するには、以下の要件を満たす必要があります。

- Alibaba Cloudアカウント。まだお持ちでない場合は、[アカウントを設定](https://account.alibabacloud.com/register/intl_register.htm?spm=a2c65.11461447.0.0.40ca49d3dsWfTL)してから次に進みます。
- インターネットに接続できるパソコン
- DockerとDocker Composeの基礎知識
- Ubuntu OS 16以上で動作する仮想マシン


#3. Alibaba Cloud Starter Package 2.0
Alibaba Cloudの[スターターパッケージ](https://www.alibabacloud.com/ja/starter-packages/general)は、シンプルで拡張性が高く、費用対効果の高い[Elastic Compute Service](https://www.alibabacloud.com/ja/product/ecs) (ECS)を利用して、お客様のクラウドホスティングのあらゆるニーズに対応し、即座にサービスを開始することができます。新しいSSDクラウド・サーバー・パッケージは、使いやすく高性能な仮想マシンとより高いデータ転送プランを大幅な割引料金で提供し、月額2.50ドルからの利用を可能にします。14のグローバルリージョンで利用できるため、サーバーのデータセンターリージョンを簡単に選択して、特定の要件を満たすことができます。各ユーザーは、同時データ転送プランで最大5つのECSインスタンスを持つことができます。

#4. ケーススタディ：スターターパッケージを使用してeコマースサイトを構築する方法
####4.1. プロジェクトの概要
プロセスをよりよく理解するために、このチュートリアルでは、Magentoフレームワーク、Docker、Docker Compose、Alibaba Cloud Starter Packageを使用してEコマースウェブサイトを構築するシナリオを示します。

MagentoはPHPで書かれたオープンソースのeコマースプラットフォームです。トランザクションオプション、マルチストア機能、ロイヤルティプログラム、商品の分類とショッパーフィルタリング、プロモーションルールなどが含まれています。Dockerを使わずにMagentoをインストールすると、複数の設定が必要になるため、非常に複雑で、完了までに多くの時間がかかります。Dockerは、技術を非常に短い時間で立ち上げて実行できるようにすることで、開発者の生活を楽にしてくれます。スケーラビリティのために、多くのコンテナを同時に実行することができるので、Docker Composeは複数のコンテナを同時に実行するプロセスを支援します。

####4.2. スターターパッケージを入手する
前項で述べたプロジェクトを実装するために、Starter Packageには以下のオプションがあります。

- 1 Core CPU
- 1 GB RAM
- 25 GB SSD
- 2 TB Data Transfer


上記の仕様でプランを選択するには、以下のステップを踏む必要があります。

**ステップ1. アリババアカウントでログイン**
[アリババクラウドのホームページ](https://www.alibabacloud.com/ja)にアクセスし、画面右上の「ログイン」をクリックします。

**ステップ2. Alibaba Cloudスターターパッケージインスタンスを購入する**
ログインしたら、以下の画面からStarter Packageオプションを選択します。



![スクリーンショット 2020-08-20 10.40.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/dc2ac99d-4a54-0ac9-6c0b-829f161e6076.png)


**ステップ2a.**Starter Packageバンドルを選択したら、以下のように画面左下の「今すぐ購入」をクリックしてパッケージの購入に進みます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/55e97867-21f7-6336-a786-c9a61edec1e3.png)

**ステップ2b.**さて、以下のように「注文を確定する」をクリックして注文を確定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/253e1730-4f0b-9fbe-4c23-c73552c89e55.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/ce3f1e62-29b3-2ca7-6895-5622e1b0a986.png)

**ステップ2c.**次の画面で、ご注文を確認し、下記のように「お支払い」をクリックしてお支払いをしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/24a0eefd-03b8-5622-d4ea-b59fb77fa8cd.png)

決済処理が完了すると、お祝いのメッセージが表示されたポップアップ画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/c600742b-8ba2-1141-dabf-a8516e58e116.png)

これで、購入したばかりのインスタンスを実行して、アプリケーションを構築、デプロイ、管理したり、プランに含まれるサービスを利用することができるようになります。

**ステップ3.**インスタンスの作成と選択
Starter Package Elastic Computing Service (ECS) インスタンスを購入した後は、コンテナ化された環境で Magento アプリケーションを実行できるインスタンスを作成して実行する必要があります。

そのためには、請求管理セクションに移動して、ECS インスタンスが実行されているかどうかを確認するために注文を確認する必要があります。管理リンクをクリックして、VNC や SSH クライアントを介して接続できるパブリック IP アドレスなどの仮想マシンの詳細情報を得ることができます。このプロジェクトのインスタンスのIPは47.74.218.106です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/1da0c2b9-87e8-5e3b-63c0-8216d9ae0ec5.png)


**ステップ4.** インスタンスに接続する
VMのIPアドレスを取得したら、SSHでVMに接続し直します。ここではPuttyというソフトを使って実装します。以下は参考までにPuttyのログオン画面です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/ad5e300a-cb08-98fa-9fbc-4ff3fdedff89.png)


SSH経由でリモートVMへの設定に成功すると、以下のような画面が表示され、VM内でMagento CMSを実行するために必要なコマンドをすべて実行できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/c2433575-46d4-9bb3-3b68-98249639c093.png)

####4.3. Magento のインストールとデプロイ
**ステップ1.** DockerとDocker Composeをインストールする
Docker Composeのインストールは非常に簡単です。まず、以下のコマンドを実行して、DockerのGitHubリポジトリからパッケージを取得します。

**ステップ1a.** Dockerをインストールする

```
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - 
$ echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" | sudo tee -a /etc/apt/sources.list.d/docker.list 
$ apt-get update 
$ apt-get install docker-ce -y
```

**ステップ1b.** Docker Composeをインストールする

Docker Composeのパッケージをダウンロードしてインストールするには、以下のコマンドを実行する必要があります。

```
$ sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/a0c79e11-3870-f8d1-76f1-0da26c196b3a.png)

次に、set /usr/local/bin/docker-composeを実行ファイルとして以下のコマンドを実行してインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/36129c1b-e26f-a50c-b999-9b679635de4b.png)

インストールが成功したかどうかを確認するには、コマンドを実行します。$ docker-compose --version. これでインストールされたバージョンが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/afe2ff7b-1611-cba1-9d4f-96fde8d114c9.png)

**ステップ2.** コンテナ化された環境でMagentoを実行する
YAMLファイルを自分で作成する代わりに、Dockerhub上にあるBitnamiが提供しているものを以下のコマンドでクローンすることができます。

```
$ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-magento/master/docker-compose.yml > docker-compose.yml
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/46ff8763-4252-188e-4fba-399b2a521b44.png)

.ymlファイルから引っ張ってきた画像を以下のコマンドで実行するだけです。

```
$ docker-compose up -d
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/6af47b55-3e48-e16d-0436-58a8c8499dab.png)

**ヒント:**

- 上記のコマンドはデタッチドモードで実行されているため、コマンドがバックグラウンドで実行されている間もターミナルウィンドウを使用することができます。
- コンテナを停止したい場合は、docker-compose down コマンドを使用してください。
- ターミナル上で docker ps コマンドを実行すると、システム上のすべてのコンテナのリストを取得することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/34dbcf28-2c19-8f8f-03b1-a5c441e79161.png)

**注意：**

- 上のスクリーンショットでは、コンテナ化された環境でMagentoを実行するには、bitnami/magentoとbitnami/mariadbを2つのコンテナで実行する必要があることがわかります。
- また、Magento サーバーは、サーバーのポート 80 (http) と 443 (https) で動作しています。したがって、これらのポート（デフォルトでは閉じられています）は、ウェブサーバ経由でアプリケーションにアクセスできるようにするために、VM上で開いておく必要があります。
**ポート 80 と 443 を開きます。**

デフォルトでは、セキュリティ上の理由からポート80と443は無効になっています。これらのポートを開くには、次の画面に示すように、デフォルトのセキュリティグループのポート22の設定を優先度1でクローン化する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/07a7b46f-bca9-c40b-eeb8-3aa9f9b16791.png)

これで、コンテナが起動し、ポート80(http)と443(https)が開いています。これで、ブラウザを開いて `http://47.74.218.106` にアクセスし、以下のページを見ることができるようになったことを意味しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/99e66bb5-192b-8818-e389-5ca7e43c6552.png)

アプリの起動に成功すると、以下のようなページが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/5e76cdd5-63a8-1b9d-5497-9bc741a79a7e.png)


あなたは今、あなた自身のストアを設定するようにMagentoの管理ページを訪問したい場合があります。そこで、あなたがしなければならないのは `http://47.74.218.106/admin` にアクセスして、以下の認証情報を使用してログインすることです。

**ユーザー名**：ユーザー
**パスワード**：bitnami1

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/494518ef-b355-d194-3cc3-9b8d9ce8be90.png)

ログインすると、Magentoの管理画面にアクセスできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/d6a9a837-b677-5d92-ca2f-70499c50baf3.png)

**N.B**: IP アドレス 47.74.218.106 はインスタンスのパブリック IP であり、これはこのプロジェクトのために購入したばかりのインスタンスに固有のものであることに気づきましょう。したがって、購入するインスタンスによって異なることになります。

#5. 次に行く場所
下記のように、多くの可能な最適化オプションが用意されています。

- 簡単にトラフィックのスパイクを処理するためにウェブサイトにロードバランサーを追加する
- 2つ以上のアベイラビリティゾーンにウェブサイトを展開する


#結論
このチュートリアルで説明したすべての手順に従っていただければ、Docker Composeをシステムにインストールする方法、Docker Composeを使って複数のコンテナを実行する方法、そしてコンテナ化された環境にMagento CMSを正常にインストールする方法を理解していただけたと思います。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*