From 53e03448d5c2c33124ce24609f6179ddc94873f4 Mon Sep 17 00:00:00 2001 From: Peter Salvatore Date: Tue, 11 Nov 2014 13:28:30 -0800 Subject: [PATCH 1/2] add haskell docs --- haskell/README-short.txt | 1 + haskell/README.md | 96 +++++++++++++++++++++++++++++++++++++++ haskell/content.md | 74 ++++++++++++++++++++++++++++++ haskell/license.md | 5 ++ haskell/logo.png | Bin 0 -> 7056 bytes haskell/user-feedback.md | 1 + 6 files changed, 177 insertions(+) create mode 100644 haskell/README-short.txt create mode 100644 haskell/README.md create mode 100644 haskell/content.md create mode 100644 haskell/license.md create mode 100644 haskell/logo.png create mode 100644 haskell/user-feedback.md diff --git a/haskell/README-short.txt b/haskell/README-short.txt new file mode 100644 index 00000000..ec784779 --- /dev/null +++ b/haskell/README-short.txt @@ -0,0 +1 @@ +Haskell is an advanced purely-functional programming language. This image contains a minimal Haskell (GHC) toolchain consisting of alex, cabal, ghc, and happy. diff --git a/haskell/README.md b/haskell/README.md new file mode 100644 index 00000000..c01ae382 --- /dev/null +++ b/haskell/README.md @@ -0,0 +1,96 @@ +# Supported tags and respective `Dockerfile` links + +- [`latest`, `7.8` (*7.8/Dockerfile*)](https://github.com/darinmorrison/docker-haskell/blob/399ec9abffb3c86d6747d7ab5dc40556d6de9e4b/7.8/Dockerfile) + +For more information about this image and its history, please see the [relevant +manifest file +(`library/haskell`)](https://github.com/docker-library/official-images/blob/master/library/haskell) +in the [`docker-library/official-images` GitHub +repo](https://github.com/docker-library/official-images). + +# What is Haskell? + +[Haskell](http://www.haskell.org) is a [lazy](http://en.wikibooks.org/wiki/Haskell/Laziness), functional, statically-typed programming language with advanced type system features such as higher-rank, higher-kinded parametric [polymorphism](http://en.wikibooks.org/wiki/Haskell/Polymorphism), monadic [effects](http://en.wikibooks.org/wiki/Haskell/Understanding_monads/IO), generalized algebraic data types ([GADT](http://en.wikibooks.org/wiki/Haskell/GADT)s), flexible [type classes](http://en.wikibooks.org/wiki/Haskell/Advanced_type_classes), associated [type families](http://en.wikipedia.org/wiki/Type_family), and more. + +Haskell's [`ghc`](http://www.haskell.org/ghc) is a [portable](https://ghc.haskell.org/trac/ghc/wiki/Platforms), [optimizing](http://benchmarksgame.alioth.debian.org/u64q/haskell.php) compiler with a foreign-function interface ([FFI](http://en.wikibooks.org/wiki/Haskell/FFI)), an [LLVM backend](https://www.haskell.org/ghc/docs/7.8.3/html/users_guide/code-generators.html), and sophisticated runtime support for [concurrency](http://en.wikibooks.org/wiki/Haskell/Concurrency), explicit/implicit [parallelism](http://community.haskell.org/~simonmar/pcph/), runtime [profiling](http://www.haskell.org/haskellwiki/ThreadScope), etc. Other Haskell tools like [`criterion`](http://www.serpentine.com/criterion/tutorial.html), [`quickcheck`](https://www.fpcomplete.com/user/pbv/an-introduction-to-quickcheck-testing), [`hpc`](http://www.haskell.org/haskellwiki/Haskell_program_coverage#Examples), and [`haddock`](http://en.wikipedia.org/wiki/Haddock_(software)) provide advanced benchmarking, property-based testing, code coverage, and documentation generation. + +A large number of production-quality Haskell libraries are available from [Hackage](https://hackage.haskell.org). The [`cabal`](https://www.fpcomplete.com/user/simonmichael/how-to-cabal-install) tool fetches packages and builds projects using the Hackage ecosystem. + +![logo](https://raw.githubusercontent.com/docker-library/docs/master/haskell/logo.png) + +## Contents + +This image ships a minimal Haskell toolchain with the following packages: + +| package | version | +|-----------------|------------| +| `alex` | `3.1.3` | +| `cabal-install` | `1.20.0.3` | +| `happy` | `1.19.4` | +| `ghc` | `7.8.3` | + + +## Usage + +* Start an interactive interpreter session with `ghci`: + +``` + $ docker run -it --rm haskell:7.8 + GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help + Loading package ghc-prim ... linking ... done. + Loading package integer-gmp ... linking ... done. + Loading package base ... linking ... done. + Prelude> +``` + +* Dockerize a [Hackage](http://hackage.haskell.org) app with a Dockerfile inheriting from the base image: + +``` + FROM haskell:7.8 + RUN cabal update && cabal install MazesOfMonad + VOLUME /root/.MazesOfMonad + ENTRYPOINT ["/root/.cabal/bin/mazesofmonad"] +``` + +* Iteratively develop then ship a Haskell app with a Dockerfile utilizing the +build cache: + +``` + FROM haskell:7.8 + + RUN cabal update + + # Add .cabal file + ADD ./server/snap-example.cabal /opt/server/snap-example.cabal + + # Docker will cache this command as a layer, freeing us up to + # modify source code without re-installing dependencies + RUN cd /opt/server && cabal install --only-dependencies -j4 + + # Add and Install Application Code + ADD ./server /opt/server + RUN cd /opt/server && cabal install + + # Add installed cabal executables to PATH + ENV PATH /root/.cabal/bin:$PATH + + # Default Command for Container + WORKDIR /opt/server + CMD ["snap-example"] +``` + +## Examples + +See the application snippet above in more detail in the [example snap application](https://github.com/darinmorrison/docker-haskell/tree/master/examples/7.8.3/snap). + +# License + +This image is licensed under the MIT License (see +[LICENSE](https://github.com/darinmorrison/docker-haskell/blob/master/LICENSE)), +and includes software licensed under the +[Glasgow haskell Compiler License](https://www.haskell.org/ghc/license) +(BSD-style). + +# User Feedback + +Please report issues on the [GitHub project](https://github.com/darinmorrison/docker-haskell) diff --git a/haskell/content.md b/haskell/content.md new file mode 100644 index 00000000..051162b7 --- /dev/null +++ b/haskell/content.md @@ -0,0 +1,74 @@ +# What is Haskell? + +[Haskell](http://www.haskell.org) is a [lazy](http://en.wikibooks.org/wiki/Haskell/Laziness), functional, statically-typed programming language with advanced type system features such as higher-rank, higher-kinded parametric [polymorphism](http://en.wikibooks.org/wiki/Haskell/Polymorphism), monadic [effects](http://en.wikibooks.org/wiki/Haskell/Understanding_monads/IO), generalized algebraic data types ([GADT](http://en.wikibooks.org/wiki/Haskell/GADT)s), flexible [type classes](http://en.wikibooks.org/wiki/Haskell/Advanced_type_classes), associated [type families](http://en.wikipedia.org/wiki/Type_family), and more. + +Haskell's [`ghc`](http://www.haskell.org/ghc) is a [portable](https://ghc.haskell.org/trac/ghc/wiki/Platforms), [optimizing](http://benchmarksgame.alioth.debian.org/u64q/haskell.php) compiler with a foreign-function interface ([FFI](http://en.wikibooks.org/wiki/Haskell/FFI)), an [LLVM backend](https://www.haskell.org/ghc/docs/7.8.3/html/users_guide/code-generators.html), and sophisticated runtime support for [concurrency](http://en.wikibooks.org/wiki/Haskell/Concurrency), explicit/implicit [parallelism](http://community.haskell.org/~simonmar/pcph/), runtime [profiling](http://www.haskell.org/haskellwiki/ThreadScope), etc. Other Haskell tools like [`criterion`](http://www.serpentine.com/criterion/tutorial.html), [`quickcheck`](https://www.fpcomplete.com/user/pbv/an-introduction-to-quickcheck-testing), [`hpc`](http://www.haskell.org/haskellwiki/Haskell_program_coverage#Examples), and [`haddock`](http://en.wikipedia.org/wiki/Haddock_(software)) provide advanced benchmarking, property-based testing, code coverage, and documentation generation. + +A large number of production-quality Haskell libraries are available from [Hackage](https://hackage.haskell.org). The [`cabal`](https://www.fpcomplete.com/user/simonmichael/how-to-cabal-install) tool fetches packages and builds projects using the Hackage ecosystem. + +%%LOGO%% + +## Contents + +This image ships a minimal Haskell toolchain with the following packages: + +| package | version | +|-----------------|------------| +| `alex` | `3.1.3` | +| `cabal-install` | `1.20.0.3` | +| `happy` | `1.19.4` | +| `ghc` | `7.8.3` | + + +## Usage + +* Start an interactive interpreter session with `ghci`: + +``` + $ docker run -it --rm haskell:7.8 + GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help + Loading package ghc-prim ... linking ... done. + Loading package integer-gmp ... linking ... done. + Loading package base ... linking ... done. + Prelude> +``` + +* Dockerize a [Hackage](http://hackage.haskell.org) app with a Dockerfile inheriting from the base image: + +``` + FROM haskell:7.8 + RUN cabal update && cabal install MazesOfMonad + VOLUME /root/.MazesOfMonad + ENTRYPOINT ["/root/.cabal/bin/mazesofmonad"] +``` + +* Iteratively develop then ship a Haskell app with a Dockerfile utilizing the +build cache: + +``` + FROM haskell:7.8 + + RUN cabal update + + # Add .cabal file + ADD ./server/snap-example.cabal /opt/server/snap-example.cabal + + # Docker will cache this command as a layer, freeing us up to + # modify source code without re-installing dependencies + RUN cd /opt/server && cabal install --only-dependencies -j4 + + # Add and Install Application Code + ADD ./server /opt/server + RUN cd /opt/server && cabal install + + # Add installed cabal executables to PATH + ENV PATH /root/.cabal/bin:$PATH + + # Default Command for Container + WORKDIR /opt/server + CMD ["snap-example"] +``` + +## Examples + +See the application snippet above in more detail in the [example snap application](https://github.com/darinmorrison/docker-haskell/tree/master/examples/7.8.3/snap). diff --git a/haskell/license.md b/haskell/license.md new file mode 100644 index 00000000..2a10d78c --- /dev/null +++ b/haskell/license.md @@ -0,0 +1,5 @@ +This image is licensed under the MIT License (see +[LICENSE](https://github.com/darinmorrison/docker-haskell/blob/master/LICENSE)), +and includes software licensed under the +[Glasgow haskell Compiler License](https://www.haskell.org/ghc/license) +(BSD-style). diff --git a/haskell/logo.png b/haskell/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5fb3d3a53d9199b41374ec63b3fa18e1f3f81b GIT binary patch literal 7056 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 NMOjsua)epn{{c` Date: Tue, 11 Nov 2014 14:29:48 -0800 Subject: [PATCH 2/2] apply fixes based on feedback from tianon --- haskell/README-short.txt | 2 +- haskell/README.md | 39 ++++++++++++++++++++++++--------------- haskell/content.md | 17 ++++------------- haskell/license.md | 2 +- haskell/user-feedback.md | 1 - update.sh | 1 + 6 files changed, 31 insertions(+), 31 deletions(-) delete mode 100644 haskell/user-feedback.md diff --git a/haskell/README-short.txt b/haskell/README-short.txt index ec784779..c66b215d 100644 --- a/haskell/README-short.txt +++ b/haskell/README-short.txt @@ -1 +1 @@ -Haskell is an advanced purely-functional programming language. This image contains a minimal Haskell (GHC) toolchain consisting of alex, cabal, ghc, and happy. +Haskell is an advanced purely-functional programming language. diff --git a/haskell/README.md b/haskell/README.md index c01ae382..f99c40b1 100644 --- a/haskell/README.md +++ b/haskell/README.md @@ -22,40 +22,32 @@ A large number of production-quality Haskell libraries are available from [Hacka This image ships a minimal Haskell toolchain with the following packages: -| package | version | -|-----------------|------------| -| `alex` | `3.1.3` | -| `cabal-install` | `1.20.0.3` | -| `happy` | `1.19.4` | -| `ghc` | `7.8.3` | - +* `ghc` 7.8.3 +* `alex` 3.1.3 +* `cabal-install` 1.20.0.3 +* `happy` 1.19.4 ## Usage * Start an interactive interpreter session with `ghci`: -``` $ docker run -it --rm haskell:7.8 GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Prelude> -``` * Dockerize a [Hackage](http://hackage.haskell.org) app with a Dockerfile inheriting from the base image: -``` FROM haskell:7.8 RUN cabal update && cabal install MazesOfMonad VOLUME /root/.MazesOfMonad ENTRYPOINT ["/root/.cabal/bin/mazesofmonad"] -``` * Iteratively develop then ship a Haskell app with a Dockerfile utilizing the build cache: -``` FROM haskell:7.8 RUN cabal update @@ -77,7 +69,6 @@ build cache: # Default Command for Container WORKDIR /opt/server CMD ["snap-example"] -``` ## Examples @@ -88,9 +79,27 @@ See the application snippet above in more detail in the [example snap applicatio This image is licensed under the MIT License (see [LICENSE](https://github.com/darinmorrison/docker-haskell/blob/master/LICENSE)), and includes software licensed under the -[Glasgow haskell Compiler License](https://www.haskell.org/ghc/license) +[Glasgow Haskell Compiler License](https://www.haskell.org/ghc/license) (BSD-style). # User Feedback -Please report issues on the [GitHub project](https://github.com/darinmorrison/docker-haskell) +## Issues + +If you have any problems with or questions about this image, please contact us + through a [GitHub issue](https://github.com/darinmorrison/docker-haskell/issues). + +You can also reach many of the official image maintainers via the +`#docker-library` IRC channel on [Freenode](https://freenode.net). + +## Contributing + +You are invited to contribute new features, fixes, or updates, large or small; +we are always thrilled to receive pull requests, and do our best to process them +as fast as we can. + +Before you start to code, we recommend discussing your plans +through a [GitHub issue](https://github.com/darinmorrison/docker-haskell/issues), especially for more ambitious +contributions. This gives other contributors a chance to point you in the right +direction, give you feedback on your design, and help you find out if someone +else is working on the same thing. diff --git a/haskell/content.md b/haskell/content.md index 051162b7..1e18a44f 100644 --- a/haskell/content.md +++ b/haskell/content.md @@ -12,40 +12,32 @@ A large number of production-quality Haskell libraries are available from [Hacka This image ships a minimal Haskell toolchain with the following packages: -| package | version | -|-----------------|------------| -| `alex` | `3.1.3` | -| `cabal-install` | `1.20.0.3` | -| `happy` | `1.19.4` | -| `ghc` | `7.8.3` | - +* `ghc` 7.8.3 +* `alex` 3.1.3 +* `cabal-install` 1.20.0.3 +* `happy` 1.19.4 ## Usage * Start an interactive interpreter session with `ghci`: -``` $ docker run -it --rm haskell:7.8 GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Prelude> -``` * Dockerize a [Hackage](http://hackage.haskell.org) app with a Dockerfile inheriting from the base image: -``` FROM haskell:7.8 RUN cabal update && cabal install MazesOfMonad VOLUME /root/.MazesOfMonad ENTRYPOINT ["/root/.cabal/bin/mazesofmonad"] -``` * Iteratively develop then ship a Haskell app with a Dockerfile utilizing the build cache: -``` FROM haskell:7.8 RUN cabal update @@ -67,7 +59,6 @@ build cache: # Default Command for Container WORKDIR /opt/server CMD ["snap-example"] -``` ## Examples diff --git a/haskell/license.md b/haskell/license.md index 2a10d78c..77e4c130 100644 --- a/haskell/license.md +++ b/haskell/license.md @@ -1,5 +1,5 @@ This image is licensed under the MIT License (see [LICENSE](https://github.com/darinmorrison/docker-haskell/blob/master/LICENSE)), and includes software licensed under the -[Glasgow haskell Compiler License](https://www.haskell.org/ghc/license) +[Glasgow Haskell Compiler License](https://www.haskell.org/ghc/license) (BSD-style). diff --git a/haskell/user-feedback.md b/haskell/user-feedback.md deleted file mode 100644 index 37f415f5..00000000 --- a/haskell/user-feedback.md +++ /dev/null @@ -1 +0,0 @@ -Please report issues on the [GitHub project](https://github.com/darinmorrison/docker-haskell) diff --git a/update.sh b/update.sh index 1879b31d..36a4b92e 100755 --- a/update.sh +++ b/update.sh @@ -29,6 +29,7 @@ declare -A otherRepos=( [debian]='https://github.com/tianon/docker-brew-debian' [docker-dev]='https://github.com/docker/docker' [fedora]='https://github.com/lsm5/docker-brew-fedora' + [haskell]='https://github.com/darinmorrison/docker-haskell' [hipache]='https://github.com/dotcloud/hipache' [hylang]='https://github.com/hylang/hy' [jenkins]='https://github.com/cloudbees/jenkins-ci.org-docker'