2019-11-24 18:45:27 -05:00
|
|
|
FROM fpco/stack-build:lts-14.15
|
2016-01-31 19:03:56 -08:00
|
|
|
|
|
|
|
# Install all necessary Ubuntu packages
|
2018-03-28 14:43:13 +08:00
|
|
|
RUN apt-get update && apt-get install -y python3-pip libgmp-dev libmagic-dev libtinfo-dev libzmq3-dev libcairo2-dev libpango1.0-dev libblas-dev liblapack-dev gcc g++ && \
|
|
|
|
rm -rf /var/lib/apt/lists/*
|
2016-01-31 19:03:56 -08:00
|
|
|
|
|
|
|
# Install Jupyter notebook
|
2017-11-12 19:49:10 +08:00
|
|
|
RUN pip3 install -U jupyter
|
2016-01-31 19:03:56 -08:00
|
|
|
|
2018-03-28 14:43:13 +08:00
|
|
|
ENV LANG en_US.UTF-8
|
2018-03-31 19:46:11 +08:00
|
|
|
ENV NB_USER jovyan
|
|
|
|
ENV NB_UID 1000
|
|
|
|
ENV HOME /home/${NB_USER}
|
|
|
|
|
|
|
|
RUN adduser --disabled-password \
|
|
|
|
--gecos "Default user" \
|
|
|
|
--uid ${NB_UID} \
|
|
|
|
${NB_USER}
|
2016-01-31 19:03:56 -08:00
|
|
|
|
|
|
|
# Set up a working directory for IHaskell
|
2018-03-31 19:46:11 +08:00
|
|
|
RUN mkdir ${HOME}/ihaskell
|
|
|
|
WORKDIR ${HOME}/ihaskell
|
|
|
|
|
|
|
|
USER root
|
|
|
|
RUN chown -R ${NB_UID} ${HOME}
|
|
|
|
USER ${NB_UID}
|
2016-01-31 19:03:56 -08:00
|
|
|
|
|
|
|
# Set up stack
|
|
|
|
COPY stack.yaml stack.yaml
|
2018-03-31 19:46:11 +08:00
|
|
|
RUN stack config set system-ghc --global true
|
2016-01-31 19:03:56 -08:00
|
|
|
|
|
|
|
# Install dependencies for IHaskell
|
|
|
|
COPY ihaskell.cabal ihaskell.cabal
|
|
|
|
COPY ipython-kernel ipython-kernel
|
|
|
|
COPY ghc-parser ghc-parser
|
|
|
|
COPY ihaskell-display ihaskell-display
|
2018-03-31 19:46:11 +08:00
|
|
|
|
|
|
|
USER root
|
|
|
|
RUN chown -R ${NB_UID} ${HOME}
|
|
|
|
USER ${NB_UID}
|
|
|
|
|
2016-01-31 19:03:56 -08:00
|
|
|
RUN stack build --only-snapshot
|
|
|
|
|
|
|
|
# Install IHaskell itself. Don't just COPY . so that
|
|
|
|
# changes in e.g. README.md don't trigger rebuild.
|
2018-03-31 19:46:11 +08:00
|
|
|
COPY src ${HOME}/ihaskell/src
|
|
|
|
COPY html ${HOME}/ihaskell/html
|
|
|
|
COPY main ${HOME}/ihaskell/main
|
|
|
|
COPY LICENSE ${HOME}/ihaskell/LICENSE
|
|
|
|
|
|
|
|
USER root
|
|
|
|
RUN chown -R ${NB_UID} ${HOME}
|
|
|
|
USER ${NB_UID}
|
|
|
|
|
2016-01-31 19:03:56 -08:00
|
|
|
RUN stack build && stack install
|
|
|
|
|
|
|
|
# Run the notebook
|
2018-03-31 19:46:11 +08:00
|
|
|
ENV PATH $(stack path --local-install-root)/bin:$(stack path --snapshot-install-root)/bin:$(stack path --compiler-bin):/home/${NB_USER}/.local/bin:${PATH}
|
|
|
|
RUN ihaskell install --stack
|
|
|
|
WORKDIR ${HOME}
|
2018-11-22 14:33:19 -05:00
|
|
|
RUN jupyter notebook --generate-config
|
2018-03-31 19:46:11 +08:00
|
|
|
CMD ["jupyter", "notebook", "--ip", "0.0.0.0"]
|