Skip to content

Commit 3fd71ef

Browse files
authored
Merge pull request #68 from AlistairB/better-layers
Improve layer caching between images
2 parents 210996a + 8252567 commit 3fd71ef

File tree

6 files changed

+240
-240
lines changed

6 files changed

+240
-240
lines changed

8.10/buster/Dockerfile

+40-40
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

+40-40
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

+40-40
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

+40-40
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)