From 82da9b0fe8a711fef63d24bc7b7eb21de5af2172 Mon Sep 17 00:00:00 2001 From: Greg Weber Date: Wed, 27 May 2015 11:41:21 -0400 Subject: [PATCH] add a Dockerfile for haskell development --- .gitignore | 6 ++++++ Dockerfile | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 Dockerfile diff --git a/.gitignore b/.gitignore index 41260334..fa0d5d98 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,9 @@ cabal.sandbox.config /vendor/ .shelly/ tarballs/ + +# useful when mounting into docker +.cabal +.ghc +.stackage +.bash_history diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..4359c45b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +FROM haskell:7.10 +MAINTAINER Greg Weber + +# Intended as a development environment +# +# docker build -t yesod . +# docker run --rm -i -t -v `pwd`:/home/haskell yesod /bin/bash +# stackage update +# + +RUN apt-get update && apt-get install sudo \ + # ssl stuff that you may find useful + && apt-get install -y libssl-dev ca-certificates libcurl4-openssl-dev \ + # stackage-cli uses git. authbind can be useful for exposing ports + && apt-get install -y git authbind \ + && apt-get clean + +# run as a user named "haskell" +RUN useradd -m -d /home/haskell -s /bin/bash haskell +RUN mkdir -p /etc/sudoers.d && echo "haskell ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/haskell && chmod 0440 /etc/sudoers.d/haskell +ENV HOME /home/haskell +WORKDIR /home/haskell +USER haskell +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 + +# install stackage binaries to /opt/stackage +RUN sudo mkdir -p /opt/stackage/bin +ENV PATH /opt/stackage/bin:.cabal-sandbox/bin:.cabal/bin:$PATH:./ +RUN sudo chown haskell:haskell /opt/stackage/bin +RUN cabal update \ + && cabal install stackage-update && stackage-update \ + && cabal install stackage-install \ + && stackage-install stackage-cli stackage-cabal stackage-sandbox stackage-upload \ + && mv /home/haskell/.cabal/bin/* /opt/stackage/bin/ \ + && rm -r /home/haskell/.cabal