のぐそんブログ

暗いおじさんがシコシコ書くブログです。

AWSのパブリックインスタンス(EC2)でdockerを起動するメモ

AWSで作成したEC2にdockerでサーバーを立てて、パブリックIPでアクセスできるようにする為のメモ。

EC2にログインする。

ssh -i keypairへのパス ec2-user@XX.XXX.XXX.XX
sudo yum update -y
sudo yum install -y docker
sudo systemctl start docker.service
sudo systemctl enable docker.service
// ec2-user を docker グループに追加すると、sudo を使用せずに Docker コマンドを実行できる
sudo usermod -a -G docker ec2-user 

設定や、状態を確認。

sudo systemctl status docker.service
docker --version

docker-composeをインストール。

Install Docker Compose | Docker DocumentationのLinuxを参考。

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

インストールを確認。

docker-compose --version

docker-composeファイルを作成。

vi docker-compose.yml

docker-composeは、例えばこんな感じ。

version: '3'

services:
  php:
    image: php:7.2-apache
    volumes:
      - ./html:/var/www/html
    ports:
      - 80:80
    container_name: php7.2-trial2
  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=test
    container_name: mysql5.7-trial2

コンテナを作成する。

docker-compose up -d

コンテナ作成時に以下のエラーが出た場合は、exitで一旦ログアウトする。

ERROR: Couldn’t connect to Docker daemon at http+docker://localhost – is it running?

コンテナが立ち上がる。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
d3213cdea250        php:7.2-apache      "docker-php-entrypoi…"   4 minutes ago       Up 5 seconds        0.0.0.0:80->80/tcp    php7.2-trial2
449690dec0b7        mysql:5.7           "docker-entrypoint.s…"   21 minutes ago      Up 5 seconds        3306/tcp, 33060/tcp   mysql5.7-trial2

htmlディレクトリ配下に、index.htmlを作成する。
最終的にには、以下のような構成になる。

├── docker-compose.yml
├── html
│   └──index.html
└── mysql

EC2のパブリックIPでアクセスするとindex.htmlが表示される。