Dockerfile 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. FROM resin/rpi-raspbian:jessie-20170531
  2. # Set the variables
  3. ENV DEBIAN_FRONTEND noninteractive
  4. ENV PHTHON_VERSION 3.6.0
  5. WORKDIR /root
  6. # Install packages necessary for compiling python
  7. RUN apt-get update && apt-get upgrade && apt-get install -y \
  8. build-essential \
  9. libncursesw5-dev \
  10. libgdbm-dev \
  11. libc6-dev \
  12. zlib1g-dev \
  13. libsqlite3-dev \
  14. tk-dev \
  15. libssl-dev \
  16. openssl \
  17. curl \
  18. vim \
  19. mc
  20. # Download and compile python
  21. RUN apt-get install -y ca-certificates
  22. ADD "https://www.python.org/ftp/python/${PHTHON_VERSION}/Python-${PHTHON_VERSION}.tgz" /root/Python-${PHTHON_VERSION}.tgz
  23. RUN tar zxvf "Python-${PHTHON_VERSION}.tgz" \
  24. && cd Python-${PHTHON_VERSION} \
  25. && ./configure \
  26. && make \
  27. && make install \
  28. && cd .. \
  29. && rm -rf "./Python-${PHTHON_VERSION}" \
  30. && rm "./Python-${PHTHON_VERSION}.tgz"
  31. # Update pip and install jupyter
  32. RUN apt-get install -y libncurses5-dev
  33. RUN pip3 install --upgrade pip
  34. RUN pip3 install readline notebook==5.2.0 pillow
  35. # Configure jupyter
  36. # we run this manually after mounting /root/.jupyter
  37. # RUN jupyter notebook --generate-config
  38. # RUN mkdir notebooks
  39. # RUN sed -i "/c.NotebookApp.open_browser/c c.NotebookApp.open_browser = False" /root/.jupyter/jupyter_notebook_config.py \
  40. # && sed -i "/c.NotebookApp.ip/c c.NotebookApp.ip = '*'" /root/.jupyter/jupyter_notebook_config.py \
  41. # && sed -i "/c.NotebookApp.notebook_dir/c c.NotebookApp.notebook_dir = '/root/notebooks'" /root/.jupyter/jupyter_notebook_config.py
  42. # change to letscode.00
  43. # sudo vi /opt/fast/jupyter/config_root/jupyter_notebook_config.py
  44. VOLUME /root/notebooks
  45. # Add Tini. Tini operates as a process subreaper for jupyter. This prevents kernel crashes.
  46. ENV TINI_VERSION 0.14.0
  47. ENV CFLAGS="-DPR_SET_CHILD_SUBREAPER=36 -DPR_GET_CHILD_SUBREAPER=37"
  48. ADD https://github.com/krallin/tini/archive/v${TINI_VERSION}.tar.gz /root/v${TINI_VERSION}.tar.gz
  49. RUN apt-get install -y cmake
  50. RUN tar zxvf v${TINI_VERSION}.tar.gz \
  51. && cd tini-${TINI_VERSION} \
  52. && cmake . \
  53. && make \
  54. && cp tini /usr/bin/. \
  55. && cd .. \
  56. && rm -rf "./tini-${TINI_VERSION}" \
  57. && rm "./v${TINI_VERSION}.tar.gz"
  58. ENTRYPOINT ["/usr/bin/tini", "--"]
  59. EXPOSE 8888
  60. CMD ["jupyter", "notebook", "--allow-root"]
  61. HEALTHCHECK --interval=10s CMD curl -sS --fail http://localhost:8888 || exit 1