ディレクトリ構成
└─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
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ファイルの書き方でよさげのものがあったので引用します。
引用元
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
ファイル内にあるパッケージを一括インストールすることができます。
flask==2.0.1
app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "index page"
実行
以下のコマンドを実行して、localhost5001にアクセスします
docker-compose up
index page
という文字が表示させていれば成功です。