ワードプレスをクラウドにデプロイする

先日、実際に自分のブログを立ち上げるのがどれほど難しいのか興味がありましたが、コンテナでこれを行うのがどれほど簡単かに興味がありました。 あなたのためにブログをホストするプラットフォームはたくさんありますが、自分でブログを実行するのは本当に簡単ですか?

開始するには、Docker ID にサインアップするか、既存の Docker ID を使用して、新しい Compose on ECS エクスペリエンスを含む最新バージョンの Docker Desktop Edge をダウンロードします。 

地元の経験から始める

まず、自分のマシンにローカルのWordPressインスタンスをセットアップし、素晴らしいコンポーズリポジトリから作成ファイルの例を取得します。

当初、私はこれをDocker Composeでローカルで実行することに挑戦しました。

$ docker-compose up -d

次に、実行中のコンテナのリストを取得できます。

$ docker-compose ps
    Name                          Command               State          Ports
    --------------------------------------------------------------------------------------
    deploywptocloud_db_1          docker-entrypoint.sh --def ...   Up      3306/tcp, 33060/tcp
    deploywptocloud_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:80->80/tcp

そして最後に、これが正しく実行されていることを確認しました。 ワードプレスからクラウドへ 1

クラウドへのデプロイ

すごい!次に、Composeファイルの内容を調べて、クラウドに移行するときに何を変更するかを理解する必要がありました。

これは、Docker CLIの新しいDocker ECS統合を使用して、AWSのElastic Container Serviceで実行します。 これは、従来のdocker-composeコマンドではなく、いくつかの新しいdocker ecs composeコマンドを使用して実行することを意味します。(将来的にはどこにでも移動します docker compose !

version: '3.7'
    services:
    db:
    image: mysql:8.0.19
    command: '--default-authentication-plugin=mysql_native_password'
    restart: always
    volumes:
    - db_data:/var/lib/mysql
    environment:
    - MYSQL_ROOT_PASSWORD=somewordpress
    - MYSQL_DATABASE=wordpress
    - MYSQL_USER=wordpress
    - MYSQL_PASSWORD=wordpress
    wordpress:
    image: wordpress:latest
    ports:
    - 80:80
    restart: always
    environment:
    - WORDPRESS_DB_HOST=db
    - WORDPRESS_DB_USER=wordpress
    - WORDPRESS_DB_PASSWORD=wordpress
    - WORDPRESS_DB_NAME=wordpress
    volumes:
    db_data:

通常、ここではDBパスワードをシークレットに移動しますが、 ECS 統合ではまだシークレットのサポートが提供されていないため、今のところシークレットをComposeファイルに保持します。

次のステップは、AWSでこれをどのように実行するかを検討することです, 続行するには、 AWSアカウントを設定する必要があります. 

データベース・サービスの選択

現在、Docker での ECS の作成サポートはボリュームをサポートしていないため ( こちらのロードマップに投票してください)、代わりに使用するデータベース サービスを選択することをお勧めします。 この例では、RDS を選択しましょう。 

まず、AWS コンソールを開き、RDS インスタンスをプロビジョニングします。

ワードプレスからクラウド2へ

ここではRDSセクションに入り、ローカルで使用していたものと一致するMySQLインスタンスタイプを選択し、DBの最下位層も選択します。 

DBの詳細を入力し、Composeファイルに含めるパスワードをメモします。
ワードプレスからクラウド3へ

さて、今度は作成ファイルを更新して、ローカルMYSQLを使用せず、代わりにRDSインスタンスを使用する必要があります。 このために、使用する「prod」作成ファイルを作成しますが、RDSからDBホスト名を取得する必要もあります。 

ワードプレスからクラウド4へ

作成ファイルの適応

コンテナで実行されているDBを削除し、環境情報を追加することで、作成ファイルを更新できるようになりました。 

version: '3.7'
    services:
    wordpress:
    image: wordpress:latest
    ports:
    - 80:80
    restart: always
    environment:
    WORDPRESS_DB_HOST: wordpressdbecs.c1unvilqlnyq.eu-west-3.rds.amazonaws.com:3306
    WORDPRESS_DB_USER: wordpress
    WORDPRESS_DB_PASSWORD: wordpress123
    WORDPRESS_DB_NAME: wordpressdbecs

私たちが見ることができるのは、手動で作成されたRDSインスタンスに依存しているため、Composeファイルがはるかに小さくなっていることです。 私たちは単一のサービス(「ワードプレス」)しか持っておらず、これ以上の「db」サービスは必要ありません。 

ecs コンテキストの作成とデプロイ

すべてのパーツをデプロイする準備ができたので、次の手順に従ってECSコンテキストを設定することから始めます 

  1. 次のコマンドを実行して、新しい ECS コンテキストを作成します。 docker ecs setup
  1. コンテキストに名前を付けるように求められますが、Enterキーを押してコンテキストに名前を付けます ecs
  2. 次に、AWSプロファイルを選択するように求められますが、AWS拡張機能をまだインストールしていないため、新しいプロファイルを選択して「myecsprofile」という名前を付けます。
  3. 次に、地域を選択する必要があります、私はヨーロッパに拠点を置いているので、入力します eu-west-3 (以前にDBをデプロイしたのと同じ地域でこれを行うようにしてください!
  4. ここで、ここにAWSアクセスキーを入力するか、すでに AWS オクタやAWS CLIなどを使用している場合は、ここでNと言って既存の認証情報を使用する必要があります
  5. これらすべてが完了しても、「新しいARN形式に移行」(Amazonリソース名)する必要があるというエラーメッセージが表示される場合があります。 詳細については、こちらのAmazon ブログ投稿をご覧ください
    変更を完了するには、 AWS アカウントのコンソール 設定に移動し、オプトインを「有効」状態に移動してから、設定を保存する必要があります。
    ワードプレスからクラウドへ 1
  6. 次に、を使用して使用可能なコンテキストを一覧表示することにより、ECSコンテキストが正常に作成されたことを確認しましょう。 docker context ls
  7. これで、新しい ECS コンテキストを使用してデプロイできるようになりました。 ECSコンテキストを現在の焦点として設定する必要があります。 docker context use ecs
  1. 次に、新規作成コマンドを使用して、作成アプリケーションをECSにデプロイすることができます。 docker ecs compose up 
  1. これが完了すると、WordPressのログをチェックして、すべてが正しく機能していることを確認できます。 docker ecs compose logs 
  1. WordPressインスタンスがDBにアクセスできないようですが、Amazon Webコンソールに戻り、概要ページの[変更]ボタンを使用してDB設定を確認すると、セキュリティグループでWordPressデプロイメントが含まれていないことがわかりますデフォルトのグループのみは次のとおりです。
    ワードプレスからクラウド5へ

コンテナプロジェクト名が表示されるはずです(このブログ投稿を数回準備してからここにいくつかあります! このグループを同じプロジェクト名で追加し、変更を保存してすぐに適用できます。 

ecs コンテキストの作成とデプロイ

今私は実行します:ドッカーecsはpsを作成します

ワードプレスからクラウド8へ

コマンド出力から、ポートを含む完全なURLを取得し、Webブラウザを使用してクラウドに新しくデプロイされたサイトに移動できます。 

ワードプレスからクラウド7へ

すごい!これで、ローカルで作業できるファイルと、RDSインスタンスを使用してクラウドでこれを実行できるファイルの2つの作成ファイルができました。 

リソースのクリーニング

Docker compose を使用するために Web サイトを実行し続けたくない (そして支払いを続けたくない) 場合は、完了したら、RDS インスタンスも削除することをお勧めします。

結論

これで、永続的な状態でローカルまたはクラウドに展開できるWordPressインスタンスができました。

開始するには、Docker Desktopの最新のEdgeバージョンが必要であり、これをゼロから行う場合は、 WordPressの公式 イメージから始めるか、Hub上の他の 公式イメージ の1つでこれを試すことができます。 また、ECS インスタンスでローカルに作成したものを実行する場合は、最初に Docker Hub に保存しておく必要があります。 Hubでコンテンツの共有を開始するには、Hubのスタートガイドをご覧ください。