Skip to content

Commit 8252567

Browse files
committed
Improve layer caching between images
It is probably best to make the images share the same docker layers as much as possible between GHC versions.
1 parent 210996a commit 8252567

File tree

6 files changed

+240
-240
lines changed

6 files changed

+240
-240
lines changed

8.10/buster/Dockerfile

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,46 @@ RUN apt-get update && \
2525
zlib1g-dev && \
2626
rm -rf /var/lib/apt/lists/*
2727

28+
ARG STACK=2.7.5
29+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
30+
31+
RUN set -eux; \
32+
cd /tmp; \
33+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
34+
INSTALL_STACK="true"; \
35+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
36+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
37+
case "$ARCH" in \
38+
'aarch64') \
39+
# Stack does not officially support ARM64, nor do the binaries that exist work.
40+
# Hitting https://github.com/commercialhaskell/stack/issues/2103#issuecomment-972329065 when trying to use
41+
# stack-2.7.1-linux-aarch64.tar.gz
42+
INSTALL_STACK="false"; \
43+
;; \
44+
'x86_64') \
45+
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
46+
;; \
47+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
48+
esac; \
49+
if [ "$INSTALL_STACK" = "true" ]; then \
50+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
51+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
52+
\
53+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
54+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
55+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
56+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
57+
gpgconf --kill all; \
58+
\
59+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
60+
stack config set system-ghc --global true; \
61+
stack config set install-ghc --global false; \
62+
\
63+
rm -rf /tmp/*; \
64+
\
65+
stack --version; \
66+
fi
67+
2868
ARG CABAL_INSTALL=3.6.2.0
2969
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
3070

@@ -116,46 +156,6 @@ RUN set -eux; \
116156
\
117157
"/opt/ghc/$GHC/bin/ghc" --version
118158

119-
ARG STACK=2.7.5
120-
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
121-
122-
RUN set -eux; \
123-
cd /tmp; \
124-
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
125-
INSTALL_STACK="true"; \
126-
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
127-
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
128-
case "$ARCH" in \
129-
'aarch64') \
130-
# Stack does not officially support ARM64, nor do the binaries that exist work.
131-
# Hitting https://github.com/commercialhaskell/stack/issues/2103#issuecomment-972329065 when trying to use
132-
# stack-2.7.1-linux-aarch64.tar.gz
133-
INSTALL_STACK="false"; \
134-
;; \
135-
'x86_64') \
136-
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
137-
;; \
138-
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
139-
esac; \
140-
if [ "$INSTALL_STACK" = "true" ]; then \
141-
curl -sSL "$STACK_URL" -o stack.tar.gz; \
142-
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
143-
\
144-
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
145-
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
146-
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
147-
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
148-
gpgconf --kill all; \
149-
\
150-
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
151-
stack config set system-ghc --global true; \
152-
stack config set install-ghc --global false; \
153-
\
154-
rm -rf /tmp/*; \
155-
\
156-
stack --version; \
157-
fi
158-
159159
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
160160

161161
CMD ["ghci"]

8.10/slim-buster/Dockerfile

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,46 @@ RUN apt-get update && \
2323
zlib1g-dev && \
2424
rm -rf /var/lib/apt/lists/*
2525

26+
ARG STACK=2.7.5
27+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
28+
29+
RUN set -eux; \
30+
cd /tmp; \
31+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
32+
INSTALL_STACK="true"; \
33+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
34+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
35+
case "$ARCH" in \
36+
'aarch64') \
37+
# Stack does not officially support ARM64, nor do the binaries that exist work.
38+
# Hitting https://github.com/commercialhaskell/stack/issues/2103#issuecomment-972329065 when trying to use
39+
# stack-2.7.1-linux-aarch64.tar.gz
40+
INSTALL_STACK="false"; \
41+
;; \
42+
'x86_64') \
43+
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
44+
;; \
45+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
46+
esac; \
47+
if [ "$INSTALL_STACK" = "true" ]; then \
48+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
49+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
50+
\
51+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
52+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
53+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
54+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
55+
gpgconf --kill all; \
56+
\
57+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
58+
stack config set system-ghc --global true; \
59+
stack config set install-ghc --global false; \
60+
\
61+
rm -rf /tmp/*; \
62+
\
63+
stack --version; \
64+
fi
65+
2666
ARG CABAL_INSTALL=3.6.2.0
2767
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
2868

@@ -116,46 +156,6 @@ RUN set -eux; \
116156
\
117157
"/opt/ghc/$GHC/bin/ghc" --version
118158

119-
ARG STACK=2.7.5
120-
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
121-
122-
RUN set -eux; \
123-
cd /tmp; \
124-
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
125-
INSTALL_STACK="true"; \
126-
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
127-
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
128-
case "$ARCH" in \
129-
'aarch64') \
130-
# Stack does not officially support ARM64, nor do the binaries that exist work.
131-
# Hitting https://github.com/commercialhaskell/stack/issues/2103#issuecomment-972329065 when trying to use
132-
# stack-2.7.1-linux-aarch64.tar.gz
133-
INSTALL_STACK="false"; \
134-
;; \
135-
'x86_64') \
136-
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
137-
;; \
138-
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
139-
esac; \
140-
if [ "$INSTALL_STACK" = "true" ]; then \
141-
curl -sSL "$STACK_URL" -o stack.tar.gz; \
142-
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
143-
\
144-
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
145-
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
146-
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
147-
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
148-
gpgconf --kill all; \
149-
\
150-
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
151-
stack config set system-ghc --global true; \
152-
stack config set install-ghc --global false; \
153-
\
154-
rm -rf /tmp/*; \
155-
\
156-
stack --version; \
157-
fi
158-
159159
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
160160

161161
CMD ["ghci"]

9.0/buster/Dockerfile

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,46 @@ RUN apt-get update && \
2525
zlib1g-dev && \
2626
rm -rf /var/lib/apt/lists/*
2727

28+
ARG STACK=2.7.5
29+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
30+
31+
RUN set -eux; \
32+
cd /tmp; \
33+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
34+
INSTALL_STACK="true"; \
35+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
36+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
37+
case "$ARCH" in \
38+
'aarch64') \
39+
# Stack does not officially support ARM64, nor do the binaries that exist work.
40+
# Hitting https://github.com/commercialhaskell/stack/issues/2103#issuecomment-972329065 when trying to use
41+
# stack-2.7.1-linux-aarch64.tar.gz
42+
INSTALL_STACK="false"; \
43+
;; \
44+
'x86_64') \
45+
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
46+
;; \
47+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
48+
esac; \
49+
if [ "$INSTALL_STACK" = "true" ]; then \
50+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
51+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
52+
\
53+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
54+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
55+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
56+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
57+
gpgconf --kill all; \
58+
\
59+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
60+
stack config set system-ghc --global true; \
61+
stack config set install-ghc --global false; \
62+
\
63+
rm -rf /tmp/*; \
64+
\
65+
stack --version; \
66+
fi
67+
2868
ARG CABAL_INSTALL=3.6.2.0
2969
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
3070

@@ -116,46 +156,6 @@ RUN set -eux; \
116156
\
117157
"/opt/ghc/$GHC/bin/ghc" --version
118158

119-
ARG STACK=2.7.5
120-
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
121-
122-
RUN set -eux; \
123-
cd /tmp; \
124-
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
125-
INSTALL_STACK="true"; \
126-
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
127-
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
128-
case "$ARCH" in \
129-
'aarch64') \
130-
# Stack does not officially support ARM64, nor do the binaries that exist work.
131-
# Hitting https://github.com/commercialhaskell/stack/issues/2103#issuecomment-972329065 when trying to use
132-
# stack-2.7.1-linux-aarch64.tar.gz
133-
INSTALL_STACK="false"; \
134-
;; \
135-
'x86_64') \
136-
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
137-
;; \
138-
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
139-
esac; \
140-
if [ "$INSTALL_STACK" = "true" ]; then \
141-
curl -sSL "$STACK_URL" -o stack.tar.gz; \
142-
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
143-
\
144-
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
145-
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
146-
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
147-
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
148-
gpgconf --kill all; \
149-
\
150-
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
151-
stack config set system-ghc --global true; \
152-
stack config set install-ghc --global false; \
153-
\
154-
rm -rf /tmp/*; \
155-
\
156-
stack --version; \
157-
fi
158-
159159
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
160160

161161
CMD ["ghci"]

9.0/slim-buster/Dockerfile

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,46 @@ RUN apt-get update && \
2323
zlib1g-dev && \
2424
rm -rf /var/lib/apt/lists/*
2525

26+
ARG STACK=2.7.5
27+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
28+
29+
RUN set -eux; \
30+
cd /tmp; \
31+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
32+
INSTALL_STACK="true"; \
33+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
34+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
35+
case "$ARCH" in \
36+
'aarch64') \
37+
# Stack does not officially support ARM64, nor do the binaries that exist work.
38+
# Hitting https://github.com/commercialhaskell/stack/issues/2103#issuecomment-972329065 when trying to use
39+
# stack-2.7.1-linux-aarch64.tar.gz
40+
INSTALL_STACK="false"; \
41+
;; \
42+
'x86_64') \
43+
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
44+
;; \
45+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
46+
esac; \
47+
if [ "$INSTALL_STACK" = "true" ]; then \
48+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
49+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
50+
\
51+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
52+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
53+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
54+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
55+
gpgconf --kill all; \
56+
\
57+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
58+
stack config set system-ghc --global true; \
59+
stack config set install-ghc --global false; \
60+
\
61+
rm -rf /tmp/*; \
62+
\
63+
stack --version; \
64+
fi
65+
2666
ARG CABAL_INSTALL=3.6.2.0
2767
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
2868

@@ -116,46 +156,6 @@ RUN set -eux; \
116156
\
117157
"/opt/ghc/$GHC/bin/ghc" --version
118158

119-
ARG STACK=2.7.5
120-
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
121-
122-
RUN set -eux; \
123-
cd /tmp; \
124-
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
125-
INSTALL_STACK="true"; \
126-
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
127-
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
128-
case "$ARCH" in \
129-
'aarch64') \
130-
# Stack does not officially support ARM64, nor do the binaries that exist work.
131-
# Hitting https://github.com/commercialhaskell/stack/issues/2103#issuecomment-972329065 when trying to use
132-
# stack-2.7.1-linux-aarch64.tar.gz
133-
INSTALL_STACK="false"; \
134-
;; \
135-
'x86_64') \
136-
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
137-
;; \
138-
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
139-
esac; \
140-
if [ "$INSTALL_STACK" = "true" ]; then \
141-
curl -sSL "$STACK_URL" -o stack.tar.gz; \
142-
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
143-
\
144-
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
145-
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
146-
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
147-
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
148-
gpgconf --kill all; \
149-
\
150-
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
151-
stack config set system-ghc --global true; \
152-
stack config set install-ghc --global false; \
153-
\
154-
rm -rf /tmp/*; \
155-
\
156-
stack --version; \
157-
fi
158-
159159
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
160160

161161
CMD ["ghci"]

0 commit comments

Comments
 (0)