Build | Status | Badges | (per-arch) |
---|---|---|---|
This is the Git repo of the Docker "Official Image" for haskell
. See the Docker Hub page for the full readme on how to use this Docker image.
Operating System | Support | Supported Versions | Support Variants |
---|---|---|---|
Debian | Yes | buster | standard, slim |
Alpine | Planned | Last 2 releases | N/A |
Windows | Planned | ltsc2022 | windowsservercore, nanoserver |
Cabal and Stack release binaries for various platforms. These are downloaded and made available eg. copied into /usr/local/bin
.
GHC releases an archive which includes scripts to install GHC. Once downloaded GHC is installed via:
./configure
(we pass in additional paramters to the configure step)make install
The installed binaries are made availabe on the PATH
.
Verification is done following the 'preferred' method for docker official images. This means we:
GHC minor versions (eg. 9.2) that are either actively being maintained (new patch releases will come out) or are still popular will be supported by these images. Once both of these are no longer true, support can be dropped. Users can still pull these images, however they will not be listed on the docker hub page and will no longer be updated with new Cabal and Stack versions.
Additionally, only the latest patch version of each major version of GHC will recieve further updates.
For actively supported GHC versions, Cabal and Stack should be updated when new versions are relesaed.
You can build and run the images locally with something like:
$ docker build -t haskell-local 9.2/buster && docker run -it haskell-local bash
This invovles a 2 step process.
When a new version of Cabal, Stack or GHC is released the images need to be updated. In general this involves:
9.4.3
becomes 9.4.4
. This will update both Dockerfiles and the github actions..tar.xz
supported versions (currently x86_64-deb10
+ aarch64-deb10
).An example
3.6.2.0
becomes 3.8.1.0
..tar.xz
supported versions (currently x86_64-linux-deb10
+ aarch64-linux-deb10
).An example
2.9.1
becomes 2.9.3
.stack-2.9.3-linux-x86_64.tar.gz.sha256
+ stack-2.9.3-linux-aarch64.tar.gz.sha256
files in the assets list.An example (this also enabled aarch64 for stack, so has a bit more noise but you get the idea).
Images are built and released by the central docker official images system. Specifically haskell is maintained in this file. See the docs on this format.
GitCommit
in the haskell
file.Tags
if these have changed.This doc describes the process in more detail.
The docker hub haskell docs live in a separate repo.
The image tests live in the official-images repo. They are run against amd64 and aarch64 in this repo. When updating haskell
in the official images repo they are only run against amd64.
This is done via hadolint
. We should not be afraid to ignore hadolint rules globally if required as it is not really designed for the official images which have some nuances.