Wizard Notes

Python, JavaScript を使った音楽信号分析の技術録、作曲活動に関する雑記

音楽系Webサービスのインフラ構築:DockerでNginx+uWSGI+Flask+ffmpeg+LibROSA

Pythonで音楽系Webサービスを作るにあたり、素晴らしい音信号処理モジュールであるLibROSAと、様々なオーディオファイルを扱うには必須であるFFmpegをDockerに導入してみました。 最終的に、参考ページにあるような、(Nginx+)uWSGI+Flaskも入ったDocker コンテナを運用できるようになります。

参考ページ

qiita.com

qiita.com

Nginxコンテナ

参考ページそのままです

uWSGI+Flask+LibROSA+ffmpegコンテナ

Dockerfileを変更しました。

[2020年1月追記] FFmpeg Static Builds については、CPUアーキテクチャを確認して、以下のサイトのURLを使ってください。

John Van Sickle - FFmpeg Static Builds

なお、サンプルコードで指定した ffmpeg-release-64bit-static.tar.xz のURLが無効になっていました。CPUアーキテクチャx86_64の場合、 https://www.johnvansickle.com/ffmpeg/old-releases/から指定してください。

# ベースイメージ
FROM python:3.6
#FROM continuumio/anaconda3

# =====================
# FFMPEG
# =====================
RUN apt-get update && apt-get install -y \
      wget \
      xz-utils

WORKDIR /tmp

RUN wget http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz \
      && tar Jxvf ./ffmpeg-release-64bit-static.tar.xz \
      && cp ./ffmpeg*64bit-static/ffmpeg /usr/local/bin/

CMD /bin/bash


# =====================
# uWSGI and PIP
# =====================
RUN mkdir /var/www
# workdirの指定
WORKDIR /var/www

# 依存Pythonライブラリ一覧コピー
COPY requirements.txt ./

# 依存Pythonライブラリインストール
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

WORKDIR /var/www/src

CMD ["uwsgi","--ini","/var/www/uwsgi.ini"]