🐡
AWS EC2上にDockerをインストールし簡単なWebアプリを起動する
本記事で利用する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
にアクセスすると以下のように表示されていると思います。
Discussion