プログラミング

FlaskアプリのDockerデプロイガイド

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がインストールされていることを確認します。

bash
sudo 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コンテナを管理するためのツールです。

bash
sudo 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の仮想環境を作成します。

bash
python3 -m venv venv source venv/bin/activate

2.2 Flaskのインストール

次に、Flaskをインストールします。

bash
pip install flask

2.3 Flaskアプリケーションの作成

以下のようなシンプルなFlaskアプリケーションを作成します。

bash
mkdir flask_app cd flask_app touch app.py

app.pyファイルに以下のコードを記述します。

python
from 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を作成し、そこに記載しておきます。

bash
touch requirements.txt

requirements.txtファイルに以下の内容を記述します。

nginx
flask

その後、依存関係をインストールします。

bash
pip install -r requirements.txt

3. Dockerfileの作成

Flaskアプリケーションをコンテナ化するために、Dockerfileを作成します。

bash
touch 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では、以下のことを行います:

  1. Pythonの公式イメージを使用してベースを作成

  2. 作業ディレクトリを/appに設定

  3. requirements.txtをコピーして依存関係をインストール

  4. アプリケーションコードをコピー

  5. アプリケーションを実行

4. Dockerイメージのビルド

次に、FlaskアプリケーションをDockerイメージとしてビルドします。

bash
docker build -t flask-app .

このコマンドにより、現在のディレクトリにあるDockerfileを使ってイメージがビルドされます。-t flask-appは、ビルドされたイメージに「flask-app」というタグをつけることを意味します。

5. コンテナの実行

イメージがビルドされたら、次にコンテナを実行します。

bash
docker run -p 5000:5000 flask-app

このコマンドは、Flaskアプリケーションをコンテナ内で実行し、ホストのポート5000番にマッピングします。ブラウザでhttp://localhost:5000にアクセスすると、「Hello, World!」と表示されるはずです。

6. Docker Composeの使用(オプション)

もし、データベースなどの他のサービスも必要な場合、Docker Composeを使用して複数のコンテナを管理できます。以下は、docker-compose.ymlファイルの例です。

bash
touch docker-compose.yml

docker-compose.ymlファイルに以下の内容を記述します。

yaml
version: '3.8' services: web: build: . ports: - "5000:5000" volumes: - .:/app environment: - FLASK_ENV=development

このファイルを使って、Flaskアプリケーションとその依存関係を簡単に起動することができます。

bash
docker-compose up --build

7. アプリケーションのデプロイ

デプロイの準備が整ったら、サーバーにFlaskアプリケーションをデプロイできます。Ubuntu 18.04にSSHでログインし、上記の手順を繰り返すか、GitHubなどからコードをクローンしてデプロイします。

bash
git clone <リポジトリのURL> cd flask_app docker-compose up --build

これで、FlaskアプリケーションがUbuntu 18.04サーバー上でDockerを使って動作するようになります。

まとめ

以上で、FlaskアプリケーションをDockerコンテナ内で作成し、Ubuntu 18.04にデプロイする方法を紹介しました。この方法により、Flaskアプリケーションを迅速に開発し、どこでも同じ環境でデプロイできるようになります。Dockerを使うことで、依存関係の管理や環境構築の手間を減らし、効率的にアプリケーションを運用できます。

Back to top button