type
status
date
slug
summary
tags
category
icon
password
😀
EC2内でDockerがセットアップして、それをAWS EFSにマウントしました。
手順を共有したいと思います。
  • EC2のオペレーティングシステム:LINUX2023
  • Dockerのバージョン:最新版を sudo dnf install -y docker コマンドでインストールしました。」
 

構成図

構成を説明します。
  • formation templateにより、VPCを構築しております
  • formation templateにより、EC2を構築しております
  • formation templateにより、EFSを構築しております
  • formation templateにより、RDSを構築しております
  • EC2内にDockerをインストールしておリます。
  • EFSの/がEC2の/mnt/efsとマウントしておリます。
  • Docker内にwordpressをインストールしておリます。
  • Dockerの/var/www/htmlをホスト機の/mnt/efsにマウントしておリます
  • wordpress pressのデータベースはRDSを使っております。
これでアプリケーションがステートレスの状態でスケーラブルが容易になります。

notion image

1.formation templateにより、リソースを構築する操作手順

ローカルformation templateを用意し、下記の流れで、リソースを構築できます。
notion image
notion image
 
notion image
notion image
notion image
notion image
notion image

2.formation templateにより、VPCを構築

10-VPC.yml formation templateにより、下記のリソースが構築されます
リソース名
タイプ
説明
CFnVPC
AWS::EC2::VPC
VPC(仮想プライベートクラウド)の定義
PublicSubnet1
AWS::EC2::Subnet
パブリックサブネット1の定義
PublicSubnet2
AWS::EC2::Subnet
パブリックサブネット2の定義
PrivateSubnet1
AWS::EC2::Subnet
プライベートサブネット1の定義
PrivateSubnet2
AWS::EC2::Subnet
プライベートサブネット2の定義
CFnVPCIGW
AWS::EC2::InternetGateway
VPCのインターネットゲートウェイの定義
CFnVPCIGWAttach
AWS::EC2::VPCGatewayAttachment
インターネットゲートウェイをVPCにアタッチ
PublicRouteTable
AWS::EC2::RouteTable
パブリックルートテーブルの定義
PublicRoute
AWS::EC2::Route
インターネットゲートウェイを経由するデフォルトのルートの定義
PublicSubnet1Association
AWS::EC2::SubnetRouteTableAssociation
パブリックサブネット1をパブリックルートテーブルに関連付ける
PublicSubnet2Association
AWS::EC2::SubnetRouteTableAssociation
パブリックサブネット2をパブリックルートテーブルに関連付ける
下記のコードを使って、Cloud formationで、VPCを構築します

3.formation templateにより、EC2を構築

20-EC2.yml formation templateにより、下記のリソースが構築されます
リソース名
タイプ
説明
プロパティ
EC2WebServer01
AWS::EC2::Instance
EC2インスタンスの定義
ImageId: EC2インスタンスが使用するAMIのID InstanceType: インスタンスのサイズ SubnetId: EC2インスタンスを配置するサブネットのID UserData: インスタンスの起動時に実行されるスクリプト KeyName: SSHキーペアの名前 SecurityGroupIds: 関連付けるセキュリティグループのID
EC2SG
AWS::EC2::SecurityGroup
EC2インスタンス用のセキュリティグループの定義
GroupDescription: グループの説明 VpcId: 関連付けるVPCのID SecurityGroupIngress: 入力トラフィックを制御するルールのリスト
下記のコードを使って、Cloud formationで、VPCを構築します

4.formation templateにより、EFSを構築

30-EFS.yml formation templateにより、下記のリソースが構築されます
項目
説明
設定値
EFSCreate
AWS EFS ファイルシステム
- FileSystemTags: - Key: Name Value: ecs-handson-efs - PerformanceMode: generalPurpose - ThroughputMode: bursting - Encrypted: false
EFSMountTargetSecurityGroup
EFS マウントターゲット用 EC2 セキュリティグループ
- GroupDescription: EFS マウントターゲット用セキュリティグループ - VpcId: ImportValue(VPCStackName-VPCID) - SecurityGroupIngress: - IpProtocol: tcp FromPort: 2049 ToPort: 2049 CidrIp: 0.0.0.0/0
EFSMountTarget1
AWS EFS マウントターゲット #1
- FileSystemId: 参照(EFSCreate) - SecurityGroups: 参照(EFSMountTargetSecurityGroup) - SubnetId: ImportValue(VPCStackName-PublicSubnet1)
EFSMountTarget2
AWS EFS マウントターゲット #2
- FileSystemId: 参照(EFSCreate) - SecurityGroups: 参照(EFSMountTargetSecurityGroup) - SubnetId: ImportValue(VPCStackName-PublicSubnet2)
EFSInboundRule
EFS マウントターゲットセキュリティグループのインバウンドルール
- GroupId: 参照(EFSMountTargetSecurityGroup) - IpProtocol: tcp - FromPort: 2049 - ToPort: 2049 - CidrIp: 0.0.0.0/0
下記のコードを使って、Cloud formationで、EFSを構築します

5.formation templateにより、RDSを構築

40-RDS.yml formation templateにより、下記のリソースが構築されます
項目
リソース
設定値
パラメータ
VPCStack
デフォルト値: VPC-10
DBUser
デフォルト値: dbmaster
DBPassword
デフォルト値: (非表示) 1214567qaz
リソース
DBInstance
タイプ: AWS::RDS::DBInstance
削除ポリシー: Delete
DBInstanceClass: db.t3.micro
AllocatedStorage: "10"
StorageType: gp2
Engine: MySQL
MasterUsername: DBUserへの参照
MasterUserPassword: DBPasswordへの参照 (非表示)
DBName: wordpress
BackupRetentionPeriod: 0
DBSubnetGroupName: DBSubnetGroupへの参照
VPCSecurityGroups: DBSecurityGroupへの参照
DBSubnetGroup
タイプ: AWS::RDS::DBSubnetGroup
DBSubnetGroupDescription: DB Subnet Group for Private Subnet
SubnetIds:
- Fn::ImportValue: VPCStack-PrivateSubnet1への参照
- Fn::ImportValue: VPCStack-PrivateSubnet2への参照
DBSecurityGroup
タイプ: AWS::EC2::SecurityGroup
GroupDescription: AWS::StackName-MySQL
VpcId: Fn::ImportValue: VPCStack-VPCIDへの参照
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 3306
ToPort: 3306
CidrIp: 10.0.0.0/16
出力
DBEndpoint
Value: DBInstance.Endpoint.Addressからの取得
Export: Name: AWS::StackName-DBEndpoint
下記のコードを使って、Cloud formationで、RDSを構築します

7.EC2内にDockerをインストールしておリます。

テンプレートのユーザデータに、EC2が起動後に自動的に、Dockerをインストールするので、この作業の実施は不要
notion image

8.EFSの/がEC2の/mnt/efsとマウント

SSHでEC2にログインします。
notion image
notion image
 
 
 
下記のコードを使って、先ずは、EC2の「/mnt/efs」をEFSの「/」にマウントします。
マウントコマンドを使用して EFS を一時的にマウントする:
  • まず、mount コマンドを使用して EFS を一時的にマウントします。これにより、EC2 インスタンスで EFS を利用できるようになります。
    notion image
    EFS ファイルシステムのマウント:
    • /etc/fstab ファイルを編集して、EC2 インスタンスの起動時に EFS を自動でマウントするように設定します。
    • ここで、fs-12345678 の部分は EFS ファイルシステムの ID に置き換えます。
    notion image
    • sudo コマンドを使用して、/etc/fstab ファイルを開きます。
    • ファイルの末尾に、EFS ファイルシステムのマウント設定を追加します。
    <ファイルシステムID> を EFS ファイルシステムの ID に、<リージョン> を EFS ファイルシステムが作成された AWS リージョンに置き換えます。
    ファイルを保存して終了します。保存するには Ctrl + O、終了するには Ctrl + X を押します。
    これで、/etc/fstab ファイルが更新され、次回の再起動時に EFS が正しくマウントされるようになります。
    これで、EC2 インスタンスの /mnt/efs は EFS ファイルシステムのルートディレクトリにマウントされます。

    9.Docker内にwordpressをインストールします。

    下記のコードでwordpressのイメージをインストールします
    notion image
    下記のコマンドで、イメージを作るをコンテナとして起動し、ホスト機の80ポートをコンテナの80に設定して、コンテナの/var/www/html/wp-contentをホスト機の/mnt/efsにマウントするように設定します。各環境構築変数をコンテナにインポートするよう、下記のコードを参照してください。
    これで、EC2の公有 IPv4 DNSでアクセスしてみましょう
    notion image
     
    notion image

    📎 参考文章

    • 一些引用
    • 引用文章
     
    💡
    有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
    初心者向け!コンテナ化WordPressサイト構築ガイド(超詳細版)IBM クラシック・インフラストラクチャーと VPC インフラストラクチャー
    Loading...
    minami
    minami
    一个普通的干饭人🍚
    Announcement

    🎉 ブログへようこそ 🎉

    notion image
    名前:みなみ独立事務所
    性別:男
    国籍:China
    完全独学だけで基本情報をはじめ31個の資格を仕事をしながら合格。 現在はIT会社の技術担当や、ブログの執筆や学習支援などを手掛けています。 独学で合格できる学習法、勉強法、試験対策を配信します!

    📚 主な内容

    💻 IT・システム開発
    🏠 不動産 × 宅建士
    🎓 MBA 学習記録

    🔍 コンテンツの探し方

    現在、サイトのデザインはシンプルなため、情報がやや探しにくいかもしれません。
    気になるテーマを探す際は、タグ検索の利用をおすすめします。