Docker Composeを利用してPythonでMaCabが使えるDockerコンテナを作成したので、その方法をまとめておく。MeCabはオープンソースの形態素解析エンジン。
環境
Docker Desktop(Windows10 Pro)。
MeCabインストールに必要なファイルを準備
MeCabをソースファイルからインストールするので、MeCab: Yet Another Part-of-Speech and Morphological AnalyzerからMeCab本体のソース(mecab-0.996.tar.gz)とIPA辞書(mecab-ipadic-2.7.0-20070801.tar.gz)をダウンロードしておく。
Dockerfileの作成
Docker Hubにある公式Pythonイメージのpython:3.8-busterをベースにイメージを作成する。Dockerfileでは主に以下のことを行う。ダウンロードしたmecab-0.996.tar.gzとmecab-ipadic-2.7.0-20070801.tar.gzはmecabというフォルダに置いておく。
- MeCabのインストール
- IPA辞書のインストール
- 日本語フォント(fonts-takao)インストール
- ロケールの設定
- デフォルト設定だとMeCabでは半角記号が名詞・サ変接続に分類されるので記号に分類されるように設定を変更
- MeCabのPythonラッパーインストール
- ユーザーの作成
FROM python:3.8-buster # 作業ディレクトリを作り移動する WORKDIR /work # localesと日本語フォントのインストール RUN apt update \ && apt -y install --no-install-recommends \ locales \ fonts-takao \ && sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen \ && locale-gen \ && apt clean \ && fc-cache -fv COPY ./mecab/* /work/ # MeCabインストール # ldconfigはライブラリパスのキャッシュ更新用 RUN tar zxvf mecab-0.996.tar.gz \ && cd mecab-0.996 \ && ./configure \ && make \ && make check \ && make install \ && ldconfig \ && cd ../ \ && rm -rf mecab-0.996 # IPA辞書インストール # 半角記号が名詞・サ変接続になるのを記号・一般に変更 RUN tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz \ && cd mecab-ipadic-2.7.0-20070801 \ && iconv -f eucjp -t utf8 unk.def > unk_utf8.def \ && sed -i -e 's/SYMBOL,1283,1283,17585,名詞,サ変接続,\*,\*,\*,\*,\*/SYMBOL,1283,1283,17585,記号,一般,\*,\*,\*,\*,\*/' unk_utf8.def \ && mv unk.def unk.def.original \ && iconv -f utf8 -t eucjp unk_utf8.def > unk.def \ && ./configure --with-charset=utf8 --enable-utf8-only \ && make \ && make install \ && cp unk.def /usr/local/lib/mecab/dic/ipadic \ && cd ../ \ && rm -rf mecab-ipadic-2.7.0-20070801 # ロケールの設定 ENV LANG="ja_JP.UTF-8" \ LANGUAGE="ja_JP:ja" \ LC_ALL="ja_JP.UTF-8" # MeCabのPythonラッパーインストール COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # インストールに使用したファイルを削除 RUN rm -rf /work/* # ユーザーを作成してデフォルトユーザーにする RUN groupadd -r pyuser \ && useradd --no-log-init -r -g pyuser pyuser USER pyuserインストールするPythonラッパーはrequirments.txtに記載しておく。
Docker-compose.ymlの作成
Dockerfileでイメージ作成の準備が出来たので、次はdocker-compose.ymlを用意する。
version: "3" services: pymecab: build: context: . dockerfile: Dockerfile container_name: pymecab hostname: pymecab # コンテナを起動し続ける tty: true environment: # タイムゾーン設定 TZ: 'Asia/Tokyo'
最終的に以下のファイル構成となる。
イメージのビルド。
コンテナを起動してコンテナに入る。
コンテナ上のPythonでMeCabを使ってみる。
コンテナ上のPythonでMeCabを使う
コンテナを起動してコンテナに入る。
コンテナ上のPythonでMeCabを使ってみる。
0 件のコメント:
コメントを投稿