Flaskアプリケーションを作成し、それをDockerを使用してUbuntu 18.04にデプロイする手順を、詳細かつ包括的に説明します。Flaskは軽量なPythonのWebフレームワークで、迅速にWebアプリケーションを構築するために広く利用されています。Dockerは、アプリケーションをコンテナ化して簡単にデプロイするためのツールです。このガイドでは、FlaskアプリケーションをDockerコンテナとして構築し、Ubuntu 18.04上にデプロイする方法を学びます。
1. 必要なツールのインストール
まず、FlaskアプリケーションとDockerを動作させるために、いくつかのツールをインストールする必要があります。
1.1 Pythonのインストール
FlaskはPythonで動作します。まず、Ubuntu 18.04にPythonがインストールされていることを確認します。
bashsudo apt update sudo apt install python3 python3-pip
1.2 Dockerのインストール
次に、Dockerをインストールします。Dockerはコンテナ化されたアプリケーションを簡単に作成し、デプロイできるツールです。
bash# Dockerの公式リポジトリを追加
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# Dockerの公式GPGキーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Dockerの安定版リポジトリを追加
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Dockerをインストール
sudo apt update
sudo apt install docker-ce
# Dockerが正しくインストールされたか確認
sudo docker --version
1.3 Docker Composeのインストール
次に、Docker Composeをインストールします。Docker Composeは、複数のDockerコンテナを管理するためのツールです。
bashsudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
2. Flaskアプリケーションの作成
次に、Flaskアプリケーションを作成します。
2.1 仮想環境の作成
Flaskをプロジェクトで使用するために、Pythonの仮想環境を作成します。
bashpython3 -m venv venv
source venv/bin/activate
2.2 Flaskのインストール
次に、Flaskをインストールします。
bashpip install flask
2.3 Flaskアプリケーションの作成
以下のようなシンプルなFlaskアプリケーションを作成します。
bashmkdir flask_app
cd flask_app
touch app.py
app.pyファイルに以下のコードを記述します。
pythonfrom flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
2.4 必要なPythonパッケージのインストール
Flask以外に必要なパッケージがあれば、requirements.txtを作成し、そこに記載しておきます。
bashtouch requirements.txt
requirements.txtファイルに以下の内容を記述します。
nginxflask
その後、依存関係をインストールします。
bashpip install -r requirements.txt
3. Dockerfileの作成
Flaskアプリケーションをコンテナ化するために、Dockerfileを作成します。
bashtouch Dockerfile
以下の内容をDockerfileに記述します。
Dockerfile# Pythonの公式イメージを使用 FROM python:3.8-slim # 作業ディレクトリを設定 WORKDIR /app # requirements.txtをコピー COPY requirements.txt . # 必要なパッケージをインストール RUN pip install --no-cache-dir -r requirements.txt # アプリケーションのコードをコピー COPY . . # Flaskアプリケーションを実行する CMD ["python", "app.py"]
このDockerfileでは、以下のことを行います:
-
Pythonの公式イメージを使用してベースを作成
-
作業ディレクトリを
/appに設定 -
requirements.txtをコピーして依存関係をインストール -
アプリケーションコードをコピー
-
アプリケーションを実行
4. Dockerイメージのビルド
次に、FlaskアプリケーションをDockerイメージとしてビルドします。
bashdocker build -t flask-app .
このコマンドにより、現在のディレクトリにあるDockerfileを使ってイメージがビルドされます。-t flask-appは、ビルドされたイメージに「flask-app」というタグをつけることを意味します。
5. コンテナの実行
イメージがビルドされたら、次にコンテナを実行します。
bashdocker run -p 5000:5000 flask-app
このコマンドは、Flaskアプリケーションをコンテナ内で実行し、ホストのポート5000番にマッピングします。ブラウザでhttp://localhost:5000にアクセスすると、「Hello, World!」と表示されるはずです。
6. Docker Composeの使用(オプション)
もし、データベースなどの他のサービスも必要な場合、Docker Composeを使用して複数のコンテナを管理できます。以下は、docker-compose.ymlファイルの例です。
bashtouch docker-compose.yml
docker-compose.ymlファイルに以下の内容を記述します。
yamlversion: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/app
environment:
- FLASK_ENV=development
このファイルを使って、Flaskアプリケーションとその依存関係を簡単に起動することができます。
bashdocker-compose up --build
7. アプリケーションのデプロイ
デプロイの準備が整ったら、サーバーにFlaskアプリケーションをデプロイできます。Ubuntu 18.04にSSHでログインし、上記の手順を繰り返すか、GitHubなどからコードをクローンしてデプロイします。
bashgit clone <リポジトリのURL>
cd flask_app
docker-compose up --build
これで、FlaskアプリケーションがUbuntu 18.04サーバー上でDockerを使って動作するようになります。
まとめ
以上で、FlaskアプリケーションをDockerコンテナ内で作成し、Ubuntu 18.04にデプロイする方法を紹介しました。この方法により、Flaskアプリケーションを迅速に開発し、どこでも同じ環境でデプロイできるようになります。Dockerを使うことで、依存関係の管理や環境構築の手間を減らし、効率的にアプリケーションを運用できます。
