このラボでは、Dockerfileを使って独自のDockerイメージをビルドする方法を学びます。
Dockerfileはイメージの設計図です。以下の命令を使います:
| 命令 | 説明 |
|---|---|
| FROM | ベースイメージを指定 |
| WORKDIR | 作業ディレクトリを設定 |
| COPY | ホストのファイルをイメージにコピー |
| RUN | ビルド時にコマンドを実行 |
| EXPOSE | コンテナが使用するポートを宣言 |
| CMD | コンテナ起動時のデフォルトコマンド |
まず作業ディレクトリを作成し、必要なファイルを作成します。
# 作業ディレクトリを作成して移動
mkdir -p ~/flask-app
cd ~/flask-app
cat << 'EOF' > app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return '<h1>Hello, Docker Lab!</h1><p>おめでとうございます!Flaskアプリがコンテナで動いています。</p>'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
EOF
cat << 'EOF' > requirements.txt
flask
EOF
cat << 'EOF' > Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]
EOF
# イメージをビルド(-t でタグ名を指定、最後の . はビルドコンテキスト)
docker build -t flask-app .
ビルドが成功すると、各ステップが順番に実行されてイメージが作成されます。
# ビルドしたイメージからコンテナを起動
docker run -d --name my-flask -p 5000:5000 flask-app
ブラウザで http://localhost:5000 にアクセスして、「Hello, Docker Lab!」が表示されれば成功です。
# ローカルにあるイメージ一覧
docker images
# 特定のイメージを検索
docker images flask-app
# 後片付け
docker stop my-flask
docker rm my-flask