MeCab入りのPythonを実行するDockerfileの書き方
概要
自然言語処理を含んだアプリケーションをDocker imageで構築しようとしたらDockerfileの書き方を少し工夫しなきゃいけなかったので、そのメモです。
Dockerfileの書き方
プロジェクトは以下のような状況だとします。
project ├ src │ ├ main.py │ └ requirements.txt └ Dockerfile
各ファイルの中身はこんな感じです。
main.py
# -*- coding: utf-8 -*- import MeCab def main(): # 自然言語処理など if __name__ == '__main__': main()
requirements.txt
mecab-python3
ここで普通に mecab-python3
を pip install するだけだと image のビルドでコケます。
そこで Dockerfile は以下のように書きます。
FROM python:3.6 RUN mkdir src COPY src src/ RUN apt-get update \ && apt-get install -y mecab \ && apt-get install -y mecab-ipadic \ && apt-get install -y libmecab-dev \ && apt-get install -y mecab-ipadic-utf8 \ && apt-get install -y swig RUN pip install -r ./src/requirements.txt WORKDIR ./src/ ENTRYPOINT ["python", "main.py"]