Custom Haskell Docker build
## Dockerfile for a haskell environment
FROM debian:stretch
## ensure locale is set during build
ENV LANG C.UTF-8
RUN apt-get update && \
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git && \
echo 'deb http://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA3CBA3FFE22B574 && \
apt-get update && \
apt-get install -y --no-install-recommends ghc-8.4.3 cabal-install-2.2 \
zlib1g-dev libtinfo-dev libsqlite3-dev g++ netbase xz-utils make && \
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v1.7.1/stack-1.7.1-linux-x86_64.tar.gz -o stack.tar.gz && \
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v1.7.1/stack-1.7.1-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc && \
apt-get purge -y --auto-remove curl && \
export GNUPGHOME="$(mktemp -d)" && \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys C5705533DA4F78D8664B5DC0575159689BEFB442 && \
gpg --batch --verify stack.tar.gz.asc stack.tar.gz && \
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 && \
/usr/local/bin/stack config set system-ghc --global true && \
/usr/local/bin/stack config set install-ghc --global false && \
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /stack.tar.gz.asc /stack.tar.gz
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/2.2/bin:/opt/ghc/8.4.3/bin:$PATH
## run ghci by default unless a command is specified
CMD ["ghci"]
FROM debian:stretch
ENV LANG C.UTF-8
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/2.2/bin:/opt/ghc/8.4.3/bin:$PATH
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y --no-install-recommends ca-certificates curl git gnupg dirmngr && \
echo 'deb http://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA3CBA3FFE22B574 && \
apt-get update && \
apt-get install -y --no-install-recommends g++ gcc libc6-dev libffi-dev libgmp-dev make netbase xz-utils zlib1g-dev \
ghc-8.4.3 cabal-install-2.2 && \
rm -rf /var/lib/apt/lists/* && \
curl -sSL https://get.haskellstack.org/ | sh && \
stack config set system-ghc --global true && \
stack config set install-ghc --global false && \
stack eval 'putStrLn "Hello World, GHC is running in the house"' && \
stack --local-bin-path=/usr/local/bin setup && \
apt-get autoremove -y curl && \
rm -rf /usr/share/doc && \
rm -rf /usr/share/man && \
rm -rf /root/.stack/indices/Hackage
CMD ["stack", "repl"]