SEが最近起こったことを書くブログ

ITエンジニアが試したこと、気になったことを書いていきます。

Docker上にWordCloud + MeCab +Jupyter環境構築する際にはまったこと

Docker上にWordCloud + MeCab +Jupyter環境を構築したがはまったので、 非常に雑だがメモしておく。

はまったこと

  • MeCabを利用しようとしたら、以下のエラーが出る
error message: [ifs] no such file or directory: /usr/local/etc/mecabrc

以下を実行して解決

ln -s /etc/mecabrc /usr/local/etc/mecabrc
  • WordCloudで利用する日本語フォントがない

以下を実行して解決

RUN curl -L https://moji.or.jp/wp-content/ipafont/IPAexfont/ipaexg00401.zip > font.zip
RUN unzip font.zip
RUN mkdir -p ~/.fonts
RUN cp *ttf ~/.fonts
RUN fc-cache -f -v # optional

作成したDockerfile

FROM python:3.7
  
RUN apt-get update && apt-get install -y \
    apt-utils \
    python3-setuptools \
    mecab libmecab-dev mecab-ipadic-utf8 \
    git curl
  
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - \
    && apt-get install -y nodejs
  
RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/*
  
RUN pip --no-cache-dir install \
    autopep8 \
    jupyterlab_code_formatter \
    sklearn \
    jupyterlab \
    ipykernel \
    scipy \
    numpy \
    matplotlib \
    pandas \
    nltk \
    mecab-python3 \
    gensim \
    wordcloud \
    && \
    python -m ipykernel.kernelspec
  
ENV CONFIG /root/.jupyter/jupyter_notebook_config.py
ENV CONFIG_IPYTHON /root/.ipython/profile_default/ipython_config.py
  
RUN jupyter labextension install @jupyterlab/toc \
    @lckr/jupyterlab_variableinspector \
    @ryantam626/jupyterlab_code_formatter \
    @jupyter-widgets/jupyterlab-manager && \
    jupyter serverextension enable --py jupyterlab_code_formatter && \
    jupyter labextension enable toc jupyterlab_variableinspector \
    jupyterlab-manager && \
    jupyter notebook --generate-config --allow-root && \
    ipython profile create
  
RUN echo "c.NotebookApp.ip = '*'" >>${CONFIG} && \
    echo "c.NotebookApp.port = 8888" >>${CONFIG} && \
    echo "c.NotebookApp.open_browser = False" >>${CONFIG} && \
    echo "c.NotebookApp.allow_root = True" >>${CONFIG} && \
    echo "c.NotebookApp.iopub_data_rate_limit=10000000000" >>${CONFIG} && \
    echo "c.MultiKernelManager.default_kernel_name = 'python3'" >>${CONFIG}
  
RUN echo "c.InteractiveShellApp.exec_lines = ['%matplotlib inline']" >>${CONFIG_IPYTHON}
  
# port
EXPOSE 8888
  
# Run Jupyter Notebook
WORKDIR "/root/work"

RUN ln -s /etc/mecabrc /usr/local/etc/mecabrc
RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

RUN curl -L https://moji.or.jp/wp-content/ipafont/IPAexfont/ipaexg00401.zip > font.zip
RUN unzip font.zip
RUN mkdir -p ~/.fonts
RUN cp *ttf ~/.fonts
RUN fc-cache -f -v # optional


CMD ["jupyter", "lab"]

Docker-Compose

version: '3'
services:
  app:
    build: .
    ports:
    - "8888:8888"
    volumes:
      - ./work:/root/work

参考URL

dockerfileを書く際に非常に参考にさせていただきました。 ありがとうございます。 tonop.cocolog-nifty.com

MeCabの問題調査時に参考にさせていただきました hakasenote.hnishi.com

WordCloudの問題対応時に参考にさせていただきました。 qiita.com