에서 JupyterLab 환경 만들기 - 확장 기능 추가

Docker로 JupyterLab 환경 만들기 에서는 기본적인 JupyterLab 환경 구축의 방법을 했으므로,
이 기사에서는 확장 기능을 설정하고 싶습니다.

올레올레 Jupyterlab 환경을 Docker로 만들었다 을 참고로 최소한 필요한 코드로 좁혀 보았습니다.

jupyterlab-kite 설치



jupyterlab-kite에 필요한 Dockerfile
FROM python:3

# Node.jsのインストール
RUN curl -sL https://deb.nodesource.com/setup_12.x |bash - \
    && apt-get install -y --no-install-recommends \
    nodejs

# pythonライブラリのインストール
COPY requirements.txt .
RUN pip3 install --upgrade pip && \
    pip3 install --no-cache-dir -r requirements.txt \
    && rm -rf ~/.cache/pip

# JupyterLabと拡張機能のインストール
RUN pip3 install --upgrade --no-cache-dir \
    jupyterlab \
    'jupyterlab-kite>=2.0.2' \
    && jupyter labextension install \
        '@kiteco/jupyterlab-kite' \

# jupyter-kiteのインストール
RUN cd && \
    wget https://linux.kite.com/dls/linux/current && \
    chmod 777 current && \
    sed -i 's/"--no-launch"//g' current > /dev/null && \
    ./current --install ./kite-installer

WORKDIR /src
COPY /src /src

jupyterlab-kite를 설치하려면 Node.js가 필요하므로,
시작 부분의 Node.jsのインストール 부분이 필요합니다.

그리고 jupyter-kiteのインストール 의 장소도 왜 필요한지 모르고,
제거하고 실행하면 아래와 같은 오류가 표시되었습니다.



jupyter-kite를 실행하려면 Kite Engine 데스크톱 애플리케이션이 필요하다고 표시됩니다.

docker-compose.yml



docker-compose.yml 파일에 --NotebookApp.token=''를 추가했습니다.
version: '3'
services:
  jupyterlab:
    restart: always
    build:
      context: .
      dockerfile: Dockerfile
    container_name: jupyterlab
    working_dir: '/src'
    tty: true
    volumes:
      - ./src:/src
    ports: 
      - "8080:8080"
    command: jupyter-lab --ip 0.0.0.0 --port=8080 --allow-root --no-browser --NotebookApp.token=''

이제 백그라운드에서 -d를 실행해도 토큰을 입력하지 않고 JupyterLab을 열 수 있습니다.
docker compose up -d

기능 테스트에서 추가하고 싶은 경우



이전 기사에서 작성한 컨테이너 안에 들어가 설치할 수 있습니다.
docker exec -it [コンテナ名] bash

그 중에서 시도해보고 움직이면 Dockerfile에 추가하는 방법도 있습니다.
내 경우에는 나중에 설명합니다. Variable Inspector오류 내용을 확인하기 위해 컨테이너에 들어가서 실행했습니다.

기타 원하는 기능 추가



추가하고 싶은 기능은 아래를 참고로 했습니다.

이 중에서 아래 3개를 넣는데 빠진 점이 2개 있었습니다.
  • Variable Inspector
  • Table of Contents
  • jupyterlab_code_formatter

  • Variable Inspector



    Variable Inspector를 넣을 때는jupyter labextension install @lckr/jupyterlab_variableinspector 는 그대로는 사용할 수 없었습니다.
    여기에 쓰여진 requirements에 쓰여있는 라이브러리를 모두 설치하면 문제없이 움직입니다.

    다만, 그것이라고 불필요한 라이브러리도 많기 때문에 대신에pip3 install lckr-jupyterlab-variableinspector 를 사용해도 문제없이 움직였습니다.

    jupyterlab_code_formatter



    처음 참고 기사와 같이 yapf를 사용하려고 하면 isort가 들어 있지 않다는 오류가 나왔습니다.
    검색해 차이를 조사한 결과, 이 기사를 참고로 black, isort를 사용해 갈까라고 생각해 그 2개를 선택하고 있습니다.

    루트 사용자 설정



    컨테이너 내에서 확장 기능을 추가하는 경우 루트 사용자로 실행
    WARNING이 나왔기 때문에, 그 설정도 Dockfile에 추가하는 것이 좋을 것 같습니다.
    Kite 외에도 다음 세 가지를 데포에서 사용하기 위해 Dockerfike를 변경했습니다.

    최종 Dockerfile



    현재 상태는 어디에서 무엇을 넣고 있는지 파악하기 쉽도록 확장 기능마다RUN 를 나누어 실행하고 있습니다만, 익숙해지면 혼합해 실행할지도 모릅니다.

    4개의 확장 기능 추가
    FROM python:3
    USER root
    
    RUN curl -sL https://deb.nodesource.com/setup_12.x |bash - \
        && apt-get install -y --no-install-recommends \
        nodejs \
        yarn
    
    # install python library
    COPY requirements.txt .
    RUN pip3 install --upgrade pip && \
        pip3 install --no-cache-dir -r requirements.txt \
        && rm -rf ~/.cache/pip
    
    # install jupyterlab&kite
    RUN pip3 install --no-cache-dir \
        jupyterlab \
        'jupyterlab-kite>=2.0.2' \
        && jupyter labextension install \
            '@kiteco/jupyterlab-kite'
    
    # install jupyterlab_variableinspector
    RUN pip3 install --upgrade --no-cache-dir \
        black \
        isort \
        jupyterlab_code_formatter \
        && jupyter labextension install \
            @ryantam626/jupyterlab_code_formatter \
        && jupyter serverextension enable --py jupyterlab_code_formatter
    
    # install jupyterlab_variableinspector
    RUN pip3 install --no-cache-dir lckr-jupyterlab-variableinspector
    
    # install other_extentions
    RUN  jupyter labextension install \
        @jupyterlab/toc
    
    # install jupyter-kite
    RUN cd && \
        wget https://linux.kite.com/dls/linux/current && \
        chmod 777 current && \
        sed -i 's/"--no-launch"//g' current > /dev/null && \
        ./current --install ./kite-installer
    
    WORKDIR /src
    COPY /src /src
    

    확장 기능에 대한 정보



    컨테이너 안에 들어가 아래의 명령을 실행하면 지금 들어 있는 확장 기능 일람을 표시할 수 있습니다.

    확장 기능 목록 표시
    jupyter labextension list
    

    출력 결과
    JupyterLab v3.0.16
    /usr/local/share/jupyter/labextensions
            @jupyter-widgets/jupyterlab-manager v3.0.0 enabled OK (python, jupyterlab_widgets)
            @kiteco/jupyterlab-kite v2.0.2 enabled OK (python, jupyterlab_kite)
            @ryantam626/jupyterlab_code_formatter v1.4.10 enabled OK (python, jupyterlab-code-formatter)
            @lckr/jupyterlab_variableinspector v3.0.9 enabled OK (python, lckr_jupyterlab_variableinspector)
    
    Other labextensions (built into JupyterLab)
       app dir: /usr/local/share/jupyter/lab
            @jupyterlab/toc v5.0.12 enabled OK
    

    움직이지 않는 경우는 serverextention도 보면 좋다고 합니다.
    자세한 내용은 알 수 없습니다.
    jupyter serverextension list
    

    출력 결과
    config dir: /root/.jupyter
        jupyterlab_code_formatter  enabled 
        - Validating...
          jupyterlab_code_formatter 1.4.10 OK
    config dir: /usr/local/etc/jupyter
        jupyterlab  enabled 
        - Validating...
          jupyterlab 3.0.16 OK
        jupyterlab_code_formatter  enabled 
        - Validating...
          jupyterlab_code_formatter 1.4.10 OK
    

    좋은 웹페이지 즐겨찾기