🐡

AWS EC2上にDockerをインストールし簡単なWebアプリを起動する

2022/12/22に公開

本記事で利用するEC2インスタンスを以下を想定しています。

  • インスタンスタイプ: t2.micro
  • OSイメージ: Amazon Linux

また、この手順を試すにあたって自身のIPアドレス(または任意のIPアドレス)からポート番号22(ssh用), 80(http用)に対してのインバウンドアクセスを許可する必要があります。

Dockerのインストール

sudo yum update -y
sudo yum -y install docker

インストールするかどうかの確認がなされると思いますので、yを入力する。

# Dockerデーモンを起動
sudo systemctl start docker
sudo systemctl enable docker
# sudo無しでdockerコマンドを利用できるように(ec2-userはAmzon Linuxのデフォルトユーザー)
sudo usermod -aG docker ec2-user

ここまでやったら、インスタンスから一度ログアウト(Ctrl+d)して再度sshログインする。

# dockerコマンドが使えることを確認
docker info
# docker hubにログイン
docker login

ユーザー名とパスワードが聞かれるので、Docker Hubのユーザー名とパスワードを入力する。

「Login Succeeded」と表示されたらDockerの準備は完了です。

Flaskで作ったWebアプリを起動する

次のようなファイル構成とします。

.
├── Dockerfile
└── app.py

Dockerfileを編集

FROM python:3.10.9-slim-buster

WORKDIR /python-app
RUN pip3 install flask

COPY ./app.py /python-app/app.py

EXPOSE 8080
ENTRYPOINT ["python3", "app.py"]

app.pyを編集

from flask import Flask
import os

app = Flask(__name__)

name = os.environ['name']

@app.route('/dockerdemo')
def dockerdemo():
    return name + " welcome to my container!"

if (__name__) == "__main__":
    app.run(host='0.0.0.0', port=8080, debug=True)

コンテナを起動

DockerfileからDockerイメージをビルド

docker build --tag dockerdemo ./

作成したイメージからコンテナを起動する。-e name='schnell'でコンテナ内の環境変数を指定しています。好きなまえに置き換えてください。

docker run -d --name dockerdemo -e name='schnell' -p 80:8080 dockerdemo

ここまで来たら、インスタンスのパブリックIPアドレス:80/dockerdemoにアクセスすると以下のように表示されていると思います。

GitHubで編集を提案

Discussion