LoginSignup
1
0

More than 1 year has passed since last update.

【Flask】で作ったWebアプリをコンテナ化する

Posted at

alpine_linux_app.png

以前作ったWebアプリをコンテナ化するために改良

修正のポイント

  • コンテナ化するために軽量な「Alpine Linux」をベースとして選択する
  • Jinja2のテンプレートを修正し全体のビジュアルを変更
  • 追加インストールするLinuxコマンドを確認
  • 追加するpythonのライブラリは、「pip freeze」コマンドでrequirements.txtにリストする

Flaskの簡易ウェブサーバー機能で動くように設定していので、Production環境では使わないように注意

ビルドするディレクトリ構成

pkg
  ├─ static
  |    ├─ css
  |    ├─ db
  |    └─ images
  ├─ templates  (htmlファイルを格納)   
  ├─ alpine_app.py
  └─ Dockerfile

Dockerファイルの設定

# ベースイメージを指定する
FROM alpine:latest

# ADD/COPY、RUN実行時の作業ディレクトリを指定
WORKDIR /webapp

# イメージにファイルやフォルダを追加する
COPY . /webapp/

# イメージをビルドする際のコマンド(Alpineはapk)
RUN apk update \
    && apk add python3 \
    && apk add python3-dev \
    && apk add py3-pip \ 
    && apk add iproute2-ss \
    && apk add lsblk \
    && apk add procps

# pipでPythonライブラリをインストール
RUN pip install -U pip
RUN pip install -r /webapp/requirements.txt

# コンテナが外部と通信するポートを指定
EXPOSE 5555

# コンテナを起動するときに実行する既定のコマンドを指定
CMD ["python", "alpine_app.py"]

イメージをビルドする

docker build -t <Docker HUBユーザ名>/alpine_app:0.3 .
  • -tでイメージを指定する際に、Dockerのユーザ名を指定しておかないとDocker HUBのリポジトリにpushできないので注意
mashcannu@mac:~/GitHub/AlpineApp/pkg$ docker build -t mashcannu/alpine_app .
[+] Building 25.2s (11/11) FINISHED                                                      
 => [internal] load build definition from Dockerfile                                0.0s
 => => transferring dockerfile: 802B                                                0.0s
 => [internal] load .dockerignore                                                   0.0s
 => => transferring context: 2B                                                     0.0s
 => [internal] load metadata for docker.io/library/alpine:latest                    0.0s
 => [1/6] FROM docker.io/library/alpine:latest                                      0.0s
 => [internal] load build context                                                   0.0s
 => => transferring context: 18.61kB                                                0.0s
 => CACHED [2/6] WORKDIR /webapp                                                    0.0s
 => [3/6] COPY . /webapp/                                                           0.0s
 => [4/6] RUN apk update     && apk add python3     && apk add python3-dev     &&  11.0s
 => [5/6] RUN pip install -U pip                                                    7.4s
 => [6/6] RUN pip install -r /webapp/requirements.txt                               4.5s 
 => exporting to image                                                              2.0s 
 => => exporting layers                                                             2.0s 
 => => writing image sha256:5656a0860a8ed25d743c4d183f83eefe982e0ed46b6788b160e607  0.0s 
 => => naming to docker.io/library/alpine_app                                       0.0s 

Docker Desktop で確認

スクリーンショット 2023-02-05 15.12.38.png

1
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
1
0