hatunina’s blog

メモと日記です

「プログラマのためのDocker教科書」を読んでPython環境を作った

読みました。

www.shoeisha.co.jp

業務でDockerの機運が高まっていたので読んだ。 前半の基本的なインフラ周りやdockerコマンド、Dockerfile等についてちゃんとまとまっていてよかった。 正直、ググれば集まるような情報ではあるけど、検索力が低いので断片的な情報しか見つからず、こういうのは時間はかかるけど書籍を読んだ方が良い。 後半はGKEの話が中心だけどさっぱりわからん。 これはこの本が悪いとかじゃなくて、規模が大きくなると具体的なイメージがわからないのでそもそも理解できない。 実際のサービスで稼働しているものを触るとかしないと自分はダメそう。

Python環境作ってみた

で、読んだついでにPython(anaconda), jupyter notebook環境を作ってみました。 lightgbmも入れてます。

# Dockerfile
FROM ubuntu:18.04

LABEL maintainer="ore"

RUN apt-get -y update \
 && apt-get -y upgrade \
 && apt-get install -y language-pack-ja-base language-pack-ja

#日本語環境設定
RUN update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja

#環境変数設定
ENV LANG ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8
ENV LC_CTYPE ja_JP.UTF-8
ENV TZ JST-9

RUN apt-get update \
 && apt-get install -y vim \
 && apt-get install -y git \
 && apt-get install -y tmux \
 && apt-get install -y bzip2 \
 && apt-get install -y wget \
 && apt-get install -y htop \
 && apt-get install -y cmake \
 && apt-get install -y build-essential \
 && apt-get install -y gcc \
 && apt-get install -y g++

# Get anaconda installation script.
# RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh -O ~/anaconda.sh
RUN wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh -O ~/anaconda.sh

# -b run install in batch mode (without manual intervention), it is expected the license terms are agreed upon.
# -p PREFIX install prefix, defaults to /root/anaconda3, must not contain spaces.
RUN /bin/bash ~/anaconda.sh -b -p /opt/conda
RUN rm ~/anaconda.sh
RUN ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh
RUN echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc
RUN echo "conda activate base" >> ~/.bashrc

#RUN /bin/bash -c "jupyter notebook --generate-config"
RUN mkdir -p -m 700 /root/.jupyter/
COPY jupyter_notebook_config.py /root/.jupyter/

RUN git clone --recursive https://github.com/Microsoft/LightGBM

RUN cd LightGBM/python-package \
 && export PATH="/opt/conda/bin:$PATH" \
 && python setup.py install

CMD [ "/bin/bash" ]


Dockerfileと同じ場所に下記のupyter_notebook_config.pyを置いておく。

# jupyter_notebook_config.py
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 7777
c.NotebookApp.token = ''


下記ビルド等コマンド

# ビルド
docker build -t ml-env .
# 7777ポートでコンテナ起動
docker run -it -p 7777:7777 ml-env:latest bin/bash
# コンテナ内でnotebook起動
jupyter notebook --allow-root


本当はnotebookのパスワードとか設定しないといけないんですが、、、お察し、、、

参考

https://hub.docker.com/r/continuumio/anaconda3/