Dockerで自己証明書https環境のJupyterlabを構築

何となく自分のPC環境でJupyterNotebook試したくなったのでお手軽に準備できるものないか探していたところDockerで環境構築できるとのことで早速準備してみました。まぁすべてコピペで完成ですが、とりあえず備忘録として載せておこうかなと。

Google Colab使った方がお手軽なのはわかっているんですが、気軽に試したいのといろいろと環境を足しこんでいくとかあるかもしれないので・・・手許にほしいと思って準備しました。

◆事前準備およびDockerfile等

・Dockerfile

FROM jupyter/datascience-notebook

USER root
WORKDIR /tmp

# MeCab + mecab-ipadic-NEologd (/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd)
RUN apt-get update \
   && apt-get install -y git mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8 file patch make
RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
RUN mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -y
RUN pip install mecab-python3
RUN cp /etc/mecabrc /usr/local/etc/

# CRF++ (Cabochaで必要)
RUN wget -O /tmp/CRF++-0.58.tar.gz 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7QVR6VXJ5dWExSTQ' \
    && cd /tmp/ \
    && tar zxf CRF++-0.58.tar.gz \
    && cd CRF++-0.58 \
    && ./configure --prefix=/usr/local \
    && make \
    && make install \
    && ldconfig \
    && rm -Rf CRF++-0.58.tar.gz \
    && rm -Rf CRF++-0.58 \
    && ldconfig

# Install CaboCha
# GoogleDriveからコマンドラインでダウンロードがうまくいかないので手動でダウンロ ードしたファイルをコピー
# 配布先URL:https://drive.google.com/drive/folders/0B4y35FiV1wh7cGRCUUJHVTNJRnM?resourcekey=0-ym0BJTHMkjw3y1AEgwwaxA

COPY cabocha-0.69.tar.bz2 /tmp
RUN cd /tmp \
  && tar jxf cabocha-0.69.tar.bz2 \
  && cd cabocha-0.69 \
  && ./configure --prefix=/usr/local --with-mecab-config=`which mecab-config` --with-charset=utf8 \
  && export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH \
  && export CPLUS_INCLUDE_PATH=$C_INCLUDE_PATH \
  && export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRRY_PATH \
  && export PATH=/usr/local/bin:$PATH \
  && make \
  && make install \
  && ldconfig \
  && cd python \
  && python setup.py build \
  && python setup.py install \
  && rm -Rf cabocha-0.69.tar.bz2 \
  && rm -Rf cabocha-0.69

# Word2vec(gensim)
RUN pip install gensim


# 必要なツールとIPAフォントをインストールします
RUN apt-get update && apt-get install -y gnupg curl fonts-ipafont fonts-ipaexfont
RUN echo "font.family : IPAexGothic" >> /opt/conda/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc


# Google Chromeをインストールします
RUN wget https://dl.google.com/linux/linux_signing_key.pub \
 && apt-key add linux_signing_key.pub \
 && echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list \
 && apt-get update \
 && apt-get install -y google-chrome-stable \
 && google-chrome --version

# Chrome Driverをインストールします
RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` \
 && curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip \
 && unzip /tmp/chromedriver_linux64.zip \
 && mv chromedriver /usr/local/bin/

# PermissionError: [Errno 13] Permission denied: '/home/jovyan/.local/share/jupyter'
# となぜか怒られるのでとりあえず所有者を変更
RUN chown -R jovyan /home/jovyan/.local

USER jovyan
# selenium導入
RUN pip install selenium
WORKDIR /home/jovyan

・docker-compose.yml

version: "3.9"

networks:
  Jupyter_net:
    name: Jupyter-network
services:
  notebook:
    #image: jupyter/datascience-notebook
    build:
      context: .
      dockerfile: Jupyterimage
    # ポートの設定("ホスト:コンテナ")
    ports:
      - 8888:8888
    environment:
      - GEN_CERT=yes
      - JUPYTER_ENABLE_LAB=yes
      - GRANT_SUDO=yes
    expose:
      - 8888
    networks:
      - Jupyter_net
    volumes:
      - ./work:/home/jovyan/work
    command: start-notebook.sh --NotebookApp.token=''
    restart: always


◆参考サイト

・JupyterDocker

https://qiita.com/hgaiji/items/edf71435d0565257f980

https://github.com/Paperspace/jupyter-docker-stacks/blob/master/datascience-notebook/README.md


・https化、パスワード設定

https://qiita.com/gnsnghm/items/22a27023757dadc4ec69

https://www.xn--ebkc7kqd.com/entry/jupyter-change-pass

https://akitoshiblogsite.com/docker-jupyter-jovyan-password/

・pyenvインストール

https://outputable.com/post/start-python/


なんかパスワードがうまく設定できないのが少し気に入らない。Dockerイメージのshが古いのか定かではないけど、生成したargon2ではだめでSHA1でないとNGみたいな感じで言われててどうにもこうにもうまくいかないようだ・・・。

コメント

このブログの人気の投稿

証券外務員1種勉強(計算式暗記用メモ)

GASでGoogleDriveのサブフォルダとファイル一覧を出力する

マクロ経済学(IS-LM分析)