LoginSignup
0
2

More than 1 year has passed since last update.

DockerでFlask環境構築【Python】

Posted at

ディレクトリ構成

ディレクトリ構成
└─VoiceEmotion
    ├─Dockerfile
    ├─docker-compose.yml
    └─app
        ├─requirements.txt
        └─app.py

Dockerfile

# pythonのバージョンは任意
FROM python:3.8

WORKDIR /usr/src/app
ENV FLASK_APP=app

COPY /app/requirements.txt ./

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

FROM
ベースになるコンテナイメージの指定

WORKDIR
コンテナ内の作業ディレクトリを指定

ENV
環境変数の設定
必要に応じて使う.

COPY
イメージを構築するときに、ローカル環境からコンテナ内にファイルをコピーして設置する

RUN
コンテナ内のシェルコマンドを実行

docker-compose.yml

docker-compose.yml
version: "3"
services:
  app:
    build: .
    ports:
      - "5001:5000"
    container_name: app
    volumes:
      - ./app:/usr/src/app
    command: flask run --host=0.0.0.0

version
composeファイル形式のバージョン
バージョンによって書き方が異なるようです

service
全体を構成するコンテナの設定

app
コンテナ名

build
Dockerfileを含むディレクトリパスを指定します。

ports
ホスト側ポートとコンテナ側ポートのマッピングを指定する.
[host_port]:[container_port]

composeファイルの書き方でよさげのものがあったので引用します。
引用元

docker-compose.yml
version: '3.8'

services:
  [service_name]:
    build: [context_path]
    image: [image_name]:[tag_name]
    container_name: [container_name]
    command: [command]
    environment:
      [variable_name]: [value]
    volumes:
      - [volume_name]:[container_directory_path]:[mode]
      - [host_directory_path]:[container_directory_path]:[mode]
      - type: volume
        source: [volume_name]
        target: [container_directory_path]
      - type: bind
        source: [host_directory_path]
        target: [container_directory_path]
    networks:
      - [network_name]
    ports:
      - '[host_port]:[container_port]'
    tty: [boolean]
    restart: [restart_policy]
    depends_on:
      - [other_service_name]
  [other_service_name]:
    ...

volumes:
  [volume_name]:

networks:
  [network_name]:

requirements.txt

このファイルを作成して、パッケージ情報を記載します。
Dockerfile内にあるRUN pip install -r requirements.txtコマンドにより
requirements.txtファイル内にあるパッケージを一括インストールすることができます。

requirements.txt
flask==2.0.1

app.py

app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "index page"

実行

以下のコマンドを実行して、localhost5001にアクセスします

docker-compose up

index pageという文字が表示させていれば成功です。

参考

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