Jupyter lab で Python 以外の言語を利用できる環境を構築する。
尚、当記事では公式の Dockerイメージに Go などの幾つかのカーネルを追加するサンプルを記載する。
対象の言語用のカーネルを追加する事で jupyter でPython 以外の言語を利用する事が出来る。
https://github.com/jupyter/jupyter/wiki/Jupyter-kernels
ベースとなるイメージは公式のものを使用する
https://jupyter-docker-stacks.readthedocs.io/en/latest/
container/Dockerfile
FROM jupyter/scipy-notebook USER root RUN apt-get update RUN apt-get install -y build-essential #-------------------------------------------- # Goインストール #-------------------------------------------- RUN echo "download go - start" \ && mkdir /tmp/go && cd /tmp/go \ && wget https://go.dev/dl/go1.17.5.linux-amd64.tar.gz \ && rm -rf /usr/local/go && tar -C /usr/local -xzf go1.17.5.linux-amd64.tar.gz \ && echo "download go - end" \ && rm -rf /tmp/go #-------------------------------------------- # Go カーネル #-------------------------------------------- USER jovyan ENV GOPATH=$HOME/go RUN mkdir -p $GOPATH ENV PATH=$PATH:/usr/local/go/bin RUN echo "setup go kernel - start" \ && echo "get kernel - start" \ && env GO111MODULE=off go get -d -u github.com/gopherdata/gophernotes \ && cd "$(go env GOPATH)"/src/github.com/gopherdata/gophernotes \ && env GO111MODULE=on go install \ && mkdir -p ~/.local/share/jupyter/kernels/gophernotes \ && echo "copy go kernel - start" \ && cp kernel/* ~/.local/share/jupyter/kernels/gophernotes \ && echo "copy go kernel - end" \ && cd ~/.local/share/jupyter/kernels/gophernotes \ && chmod +w ./kernel.json \ && sed "s|gophernotes|$(go env GOPATH)/bin/gophernotes|" < kernel.json.in > kernel.json \ && echo "setup go kernel - end" #-------------------------------------------- # TypeScript カーネル #-------------------------------------------- RUN npm install -g tslab \ && tslab install --python=python3 \ && jupyter kernelspec list #-------------------------------------------- # java インストール #-------------------------------------------- RUN mkdir $HOME/openjdk && cd $HOME/openjdk \ && wget https://download.java.net/java/GA/jdk20.0.2/6e380f22cbe7469fa75fb448bd903d8e/9/GPL/openjdk-20.0.2_linux-x64_bin.tar.gz \ && tar xzfv openjdk-20.0.2_linux-x64_bin.tar.gz \ && rm -rf openjdk-20.0.2_linux-x64_bin.tar.gz ENV PATH=$HOME/openjdk/openjdk-20.0.2/bin:$PATH #-------------------------------------------- # java カーネル #-------------------------------------------- RUN cd /tmp \ && wget https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip \ && unzip ijava-1.3.0.zip \ && python3 install.py --sys-prefix \ && rm -rf ijava-1.3.0.zip #-------------------------------------------- # ポートバインド設定 #-------------------------------------------- EXPOSE 8888/tcp EXPOSE 8888/udp #-------------------------------------------- # jupyter lab起動 #-------------------------------------------- RUN mkdir -p $HOME/work && chmod -R 766 $HOME/work CMD ["jupyter", "lab"]
docker-compose.yml
version: "3" services: jupyter: build: context: ./container container_name: my-jupyterlab volumes: - ./work:/home/jovyan/work ports: - 8888:8888
docker-compose up --build -d
docker exec -i my-jupyterlab jupyter lab list Currently running servers: http://e43d493977dc:8888/?token=427aea993fdb768ef4f442d0b1cd600f56cf73f30bf8d316 :: /home/jovyan