gitpod로 jupyternotebook 개발 환경 만들기

소개



gitpod는 github의 저장소를 workspace로로드하는 클라우드 IDE입니다.
docker에서 VScode와 같은 IDE를 실행하는 것 같습니다.

공식 문서
htps //w w. 기트포 d. 이오/도 cs/

gitpod의 특징


  • 월 100 시간까지 무료
  • 브라우저와 GitHub 계정이 있으면 사용 가능
  • 열려는 디렉토리의 트리를 지정할 수 있습니다
  • VScode와 함께 사용할 수 있습니다

  • 구축할 개발 환경



    이번에는 다음과 같은 기계 학습 환경을 구축 할 것입니다.

  • 파이썬 3.7의 도커 이미지를 기반으로
  • pip에서 기계 학습 관련 라이브러리 설치

  • jupyternotebook에서 kaggle titanic 시도

  • gitpod에서 사용할 리포지토리
    1. htps : // 기주 b. 이 m / y
    2. htps : // 기주 b. 이 m / y t m tym / ml / t 네 / st_do c 케 r

    (두 가지 사용 이유는 후술)

    gitpod를 사용해 보자.



    사용할 github 리포지토리를 열고 URL 머리에 gitpod.io/#를 붙이십시오 ← 이것만!

    그건 그렇고, Chrome 확장 프로그램을 설치하면 한 번의 클릭으로 열 수 있습니다.


    이번에 사용할 2 개의 리포지토리에 대한 차이점



    결론에서 말하면, test tree에서는 환경 구축에 실패했기 때문에 test_docker tree를 사용했습니다.

    test tree



    기본적으로 설정된 gitpod docker 환경의 저장소
    이 환경에서 virtualenv로 만든 python 가상 환경을 읽으려고했지만 좋지 않았습니다.
    (파이썬 가상 환경을 컨테이너에 복사해도 컨테이너 내에서 참조되지 않는 것 같습니다)
    gitpod /workspace/ml $ cat /etc/os-release 
    NAME="Ubuntu"
    VERSION="19.04 (Disco Dingo)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 19.04"
    VERSION_ID="19.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=disco
    UBUNTU_CODENAME=disco
    gitpod /workspace/ml $ python -V
    Python 2.7.15
    gitpod /workspace/ml $ source .myvenv/bin/activate
    (.myvenv) gitpod /workspace/ml $ python -V
    Python 2.7.15
    

    세 시스템이 아니며 pip 라이브러리도 설치되지 않았습니다.

    test_docker tree



    테스트 트리에 다음 두 파일을 추가했습니다.
  • .gitpod.Dockerfile
  • .gitpod.yml

  • .gitpod.Dockerfile
    FROM python:3.7
    
    USER root
    
    COPY ["requirements.txt", "/requirements.txt"]
    RUN pwd
    RUN apt-get -y update && \
        pip install --upgrade pip && \
        pip install --upgrade setuptools && \
        pip install -r requirements.txt
    

    (컨테이너 빌드시의 디폴트 path는 /이므로, 거기에 requirements.txt를 copy한다)

    .gitpod.yml
    image:
      file: .gitpod.Dockerfile
    
    ports:
    - port: 8080
      onOpen: open-preview
    - port: 8888
      onOpen: open-browser
    

    (jupyternotebook을 사용할 수 있도록 port8888 사용)

    두 개의 파일을 추가하면 gitpod 환경을 설정할 수 있습니다.

    test_docker 리포지토리에서 gitpod 사용



    이제 URL 머리에 gitpod.io/#를 추가하십시오.
    초회시의 주의점으로서,
    - 인증이 필요하므로 허용
    - 내부적으로 container를 build 하고 있으므로, 처리가 많으면 시간이 걸린다

    ↓ 조금 기다린다


    안전하게 VScode (같은 사람)가 시작되면 완료됩니다.

    이제 터미널에서 jupyter notebook --ip=* 명령을 치자.
    gitpod /workspace/ml $ jupyter notebook --ip=*
    [W 07:34:17.085 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
    [I 07:34:17.088 NotebookApp] Serving notebooks from local directory: /workspace/python_env
    [I 07:34:17.088 NotebookApp] Jupyter Notebook 6.4.0 is running at:
    [I 07:34:17.088 NotebookApp] https://f6dd9c78-9281-4225-bec5-a2c05a810209.ws-ap0.gitpod.io:8888/?token=e4acea7f5f530d16bf660f914e13d8308fc2cc33ac5fffc1
    [I 07:34:17.088 NotebookApp]  or http://127.0.0.1:8888/?token=eb377d6f673c4f5ec0fe4ca5b994f5956be12be6dbb8c6a4
    [I 07:34:17.088 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
    [C 07:34:17.093 NotebookApp] 
    
        To access the notebook, open this file in a browser:
            file:///home/gitpod/.local/share/jupyter/runtime/nbserver-288-open.html
        Or copy and paste one of these URLs:
            http://f6dd9c78-9281-4225-bec5-a2c05a810209.ws-ap0.gitpod.io:8888/?token=eb377d6f673c4f5ec0fe4ca5b994f5956be12be6dbb8c6a4
         or http://127.0.0.1:8888/?token=eb377d6f673c4f5ec0fe4ca5b994f5956be12be6dbb8c6a4
    

    팝업이 차단되지 않으면 다른 탭에서 jupyter notebook이 열립니다.

    또는 Open Browser를 클릭하십시오.
    또는 htps // 8888-f6-d9c78-9281-4225-be c5-2c05-810209. ws- 오 p0. 기트포 d. 이오/오긴 방문



    로그인 화면이 표시되면 token을 입력하십시오.

    이번에는 아래와 같이 터미널에 표시되므로,
    http://localhost:8888/?token=eb377d6f673c4f5ec0fe4ca5b994f5956be12be6dbb8c6a4
    

    여기를 입력하십시오.eb377d6f673c4f5ec0fe4ca5b994f5956be12be6dbb8c6a4


    무사히 jupyter notebook가 열렸습니다! 이상입니다.

    추가



    코멘트 받고, 이하를 수정했습니다.

    jupyter 시작 명령을 jupyter notebook --ip=*로 변경


    --ip=* 옵션을 지정하지 않으면 jupyter notebook에서 파일을 새로 만들고 수정할 수 없으며 다음 오류가 반환되는 것으로 나타났습니다.
    [W 07:31:25.900 NotebookApp] Blocking Cross Origin API request for /api/contents.  Origin: https://8888-amethyst-vicuna-c6nx02vq.ws-us11.gitpod.io, Host: localhost:8888
    [W 07:31:25.900 NotebookApp] Not Found
    [W 07:31:25.901 NotebookApp] 404 POST /api/contents (::1) 2.050000ms referer=https://8888-amethyst-vicuna-c6nx02vq.ws-us11.gitpod.io/tree?
    

    기본적으로 액세스할 수 있는 IP 주소는 localhost뿐이며 CORS 구성에서는 Origin이 다른 경우 차단되는 것 같습니다.
    이번에는 액세스 소스 (브라우저)와 액세스 대상 (workspace)의 IP 주소는 동일하지만 Origin이 다르기 때문에 발생했습니다.
    --ip=* 옵션을 붙이면 위를 해결할 수있었습니다.

    Reference



    jupyternotebook을 쉽게 열기
    htps : // 기주 b. 코 m / 진 s t 코모다 / 다 sh an d 쥬 py r r의 taboo k-u th-gi tpo d

    파이썬 가상 환경 디렉토리를 이동 한 결과
    htps : // 놀라운 l. 코m/쿠에 s치온 s/99419

    좋은 웹페이지 즐겨찾기