0
0

Docker上で自作のwebアプリを動かす。(Flask)

Posted at

自作のwebアプリが動く環境をdockerを使って構築します。

まずメリット紹介

ライブラリインストールなど面倒な作業をスキップできる。
dockerで動かすアプリごとにリソース管理ができる。

dockerインストール

インストールしてください。
win11を使っているので docker for windowsをインストールしました。
WSL2はONにしてください。

まずライブラリインストールリストをつくる。(requirements.txt)

自分のwebアプリがあるディレクトリまで、cmdで移動してください。

cd C:\Users\sharisa\Videos\ラズベリーパイIpad

仮想環境があるならば仮想環境をアクティブにしてください。
requirements.txt作成コマンドを打ちます。

(myenv_pai) C:\Users\sharisa\Videos\ラズベリーパイIpad>pip freeze > requirements.txt

すると、、、C:\Users\sharisa\Videos\ラズベリーパイIpad ここに、 requirements.txtが作られます。
これは、仮想環境にインストールされたライブラリになります。

Dockerfile作成

ここからDocker上でwebアプリを動かすためのDocker関連ファイルが登場します。サクっと全体をお伝えします。

Dockerfileとは、

役割: Docker イメージを作成するための設計図です。

内容: アプリケーションをコンテナで動かすために必要な指示や設定が記述されています。例えば、ベースとなるOS、必要な依存関係、ファイルのコピー、コンテナ内で実行するコマンドなどを定義します。

使い方: Dockerfile をもとに、docker build コマンドを使って Docker イメージを作成します。

Docker イメージ (Docker Image)

役割: Dockerfile から生成された「完成した状態のテンプレート」です。イメージは、コンテナを実行するために必要なアプリケーション、依存関係、設定などがすべて含まれたパッケージです。

内容: コンテナのベースになるものです。イメージ自体は変更されませんが、イメージから作られるコンテナは動的に動作します。

使い方: docker run コマンドなどでイメージを基にコンテナを起動します。1つのイメージから何度でもコンテナを作成できます。

例: Pythonアプリ用のDockerイメージや、MySQLデータベースのDockerイメージ。

Docker Compose

役割: 複数のコンテナ(サービス)を簡単に管理・起動するためのツールです。各サービスの設定や依存関係、ネットワークやボリュームの設定を一括で行えます。

内容: 複数のコンテナを連携させる設定を docker-compose.yml ファイルで定義し、すべてのコンテナを一括で管理・操作できます。例えば、ウェブアプリケーションとデータベースのコンテナを連携させる場合に便利です。

使い方: docker-compose up コマンドで、docker-compose.yml に記載された全てのサービスをまとめて起動します。


Dockerfile作成に戻ります。

image.png
まず、Dockerfileの場所。仮想環境とかflaskアプリと同じ階層。

Dockerファイルの中身を作成します。

# ベースイメージを指定(Python 3.9)
FROM python:3.9-slim

# 作業ディレクトリを作成
WORKDIR /app

# Pipを最新バージョンにアップデート
RUN pip install --upgrade pip

# requirements.txtをコンテナにコピー
COPY requirements.txt .

# 必要なPythonパッケージをインストール
RUN pip install --no-cache-dir -r requirements.txt

# アプリケーションファイルをすべてコンテナにコピー
COPY . .

# 環境変数の設定
ENV FLASK_APP=flaskr
ENV FLASK_ENV=development

# ポート5000を公開
EXPOSE 5000

# アプリを起動
CMD ["flask", "run", "--host=0.0.0.0", "--port=5000","--debug"]

私は、ChatGPTを使ってdockerfileを作成しました。
保存して閉じる。

docker-compose.yml作成

docker-compose.yml
これを
C:\Users\sharisa\Videos\ラズベリーパイIpad

image.png

version: '3'
services:
  flask-app:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app
    environment:
      FLASK_ENV: development

私は、ChatGPTを使ってdockerfileを作成しました。
保存して閉じる。

flaskアプリをdockerで起動

Dockerイメージをビルド

docker build -t flask-app .

コンテナにアップロード稼働

docker run -p 5000:5000 --name flaskr-container flaskr-app

image.png

Dcokerのコンテナ上でアプリが動き出せばOK。
※flask-appというのがImage名になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0