Skip to content

Commit 63f612a

Browse files
committed
Add alpine based images
1 parent 210996a commit 63f612a

File tree

5 files changed

+539
-0
lines changed

5 files changed

+539
-0
lines changed

.github/workflows/alpine.yml

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Validate Alpine
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- master
7+
paths:
8+
- '**/alpine*/Dockerfile'
9+
- '.github/workflows/alpine.yml'
10+
11+
jobs:
12+
build-smoke-test:
13+
timeout-minutes: 30
14+
runs-on: ubuntu-latest
15+
name: ${{ matrix.ghc }}-alpine${{ matrix.os_version }}
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
ghc: ['9.0.2', '9.2.2']
20+
os_version: ['3.14', '3.15']
21+
include:
22+
- ghc: '9.0.2'
23+
ghc_minor: '9.0'
24+
- ghc: '9.2.2'
25+
ghc_minor: '9.2'
26+
steps:
27+
- uses: actions/checkout@v2
28+
- name: build + smoke test [${{ matrix.ghc }}]
29+
uses: nick-invision/retry@v2
30+
with:
31+
timeout_minutes: 8
32+
max_attempts: 3
33+
command: |
34+
docker build --pull \
35+
-t haskell:${{ matrix.ghc }}-alpine${{ matrix.os_version }} \
36+
${{ matrix.ghc_minor }}/alpine${{ matrix.os_version }}
37+
- uses: actions/checkout@v2
38+
with:
39+
repository: AlistairB/official-images
40+
ref: haskell-sh
41+
path: official-images
42+
- name: run official-images tests
43+
run: ./official-images/test/run.sh haskell:${{ matrix.ghc }}-alpine${{ matrix.os_version }}

9.0/alpine3.14/Dockerfile

+124
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
FROM alpine:3.14
2+
3+
RUN apk add --no-cache \
4+
ca-certificates \
5+
curl \
6+
gcc \
7+
git \
8+
g++ \
9+
gmp-dev \
10+
musl-dev \
11+
ncurses-dev \
12+
libc-dev \
13+
libffi-dev
14+
15+
ARG CABAL_INSTALL=3.6.2.0
16+
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
17+
18+
RUN set -eux; \
19+
apk add --no-cache --virtual .fetch-deps gnupg; \
20+
cd /tmp; \
21+
ARCH="$(apk --print-arch)"; \
22+
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-alpine.tar.xz"; \
23+
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \
24+
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \
25+
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
26+
case "$ARCH" in \
27+
'x86_64') \
28+
CABAL_INSTALL_SHA256='2d3d5e4aa83aad06ed723d7038eac41271d62b56251e0a76fa35db5f902250e3'; \
29+
;; \
30+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
31+
esac; \
32+
curl -sSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
33+
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum -c; \
34+
\
35+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \
36+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \
37+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
38+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \
39+
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
40+
# confirm we are verying SHA256SUMS that matches the release + sha256
41+
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
42+
gpgconf --kill all; \
43+
\
44+
tar -xf cabal-install.tar.gz -C /usr/local/bin; \
45+
\
46+
rm -rf /tmp/*; \
47+
apk del --no-network .fetch-deps; \
48+
\
49+
cabal --version
50+
51+
ARG GHC=9.0.2
52+
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
53+
54+
RUN set -eux; \
55+
apk add --no-cache --virtual .fetch-deps gnupg make; \
56+
cd /tmp; \
57+
ARCH="$(apk --print-arch)"; \
58+
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-alpine3.12-linux-gmp.tar.xz"; \
59+
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
60+
case "$ARCH" in \
61+
'x86_64') \
62+
GHC_SHA256='5bb1e7192c2b9fcff68930dbdc65509d345138e9a43c5d447056a68decc05ec8'; \
63+
;; \
64+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
65+
esac; \
66+
curl -sSL "$GHC_URL" -o ghc.tar.xz; \
67+
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum -c; \
68+
\
69+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
70+
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
71+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \
72+
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
73+
gpgconf --kill all; \
74+
\
75+
tar xf ghc.tar.xz; \
76+
cd "ghc-$GHC-$ARCH-unknown-linux"; \
77+
./configure --prefix "/opt/ghc/$GHC" --disable-ld-override; \
78+
make install; \
79+
# remove profiling support to save space
80+
find "/opt/ghc/$GHC/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete; \
81+
# remove some docs
82+
rm -rf "/opt/ghc/$GHC/share/"; \
83+
\
84+
rm -rf /tmp/*; \
85+
apk del --no-network .fetch-deps; \
86+
\
87+
"/opt/ghc/$GHC/bin/ghc" --version
88+
89+
ARG STACK=2.7.5
90+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
91+
92+
RUN set -eux; \
93+
apk add --no-cache --virtual .fetch-deps gnupg; \
94+
cd /tmp; \
95+
ARCH="$(apk --print-arch)"; \
96+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
97+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
98+
case "$ARCH" in \
99+
'x86_64') \
100+
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
101+
;; \
102+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
103+
esac; \
104+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
105+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum -c; \
106+
\
107+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
108+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
109+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
110+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
111+
gpgconf --kill all; \
112+
\
113+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
114+
stack config set system-ghc --global true; \
115+
stack config set install-ghc --global false; \
116+
\
117+
rm -rf /tmp/*; \
118+
apk del --no-network .fetch-deps; \
119+
\
120+
stack --version;
121+
122+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
123+
124+
CMD ["ghci"]

9.0/alpine3.15/Dockerfile

+124
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
FROM alpine:3.15
2+
3+
RUN apk add --no-cache \
4+
ca-certificates \
5+
curl \
6+
gcc \
7+
git \
8+
g++ \
9+
gmp-dev \
10+
musl-dev \
11+
ncurses-dev \
12+
libc-dev \
13+
libffi-dev
14+
15+
ARG CABAL_INSTALL=3.6.2.0
16+
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
17+
18+
RUN set -eux; \
19+
apk add --no-cache --virtual .fetch-deps gnupg; \
20+
cd /tmp; \
21+
ARCH="$(apk --print-arch)"; \
22+
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-alpine.tar.xz"; \
23+
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \
24+
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \
25+
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
26+
case "$ARCH" in \
27+
'x86_64') \
28+
CABAL_INSTALL_SHA256='2d3d5e4aa83aad06ed723d7038eac41271d62b56251e0a76fa35db5f902250e3'; \
29+
;; \
30+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
31+
esac; \
32+
curl -sSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
33+
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum -c; \
34+
\
35+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \
36+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \
37+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
38+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \
39+
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
40+
# confirm we are verying SHA256SUMS that matches the release + sha256
41+
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
42+
gpgconf --kill all; \
43+
\
44+
tar -xf cabal-install.tar.gz -C /usr/local/bin; \
45+
\
46+
rm -rf /tmp/*; \
47+
apk del --no-network .fetch-deps; \
48+
\
49+
cabal --version
50+
51+
ARG GHC=9.0.2
52+
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
53+
54+
RUN set -eux; \
55+
apk add --no-cache --virtual .fetch-deps gnupg make; \
56+
cd /tmp; \
57+
ARCH="$(apk --print-arch)"; \
58+
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-alpine3.12-linux-gmp.tar.xz"; \
59+
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
60+
case "$ARCH" in \
61+
'x86_64') \
62+
GHC_SHA256='5bb1e7192c2b9fcff68930dbdc65509d345138e9a43c5d447056a68decc05ec8'; \
63+
;; \
64+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
65+
esac; \
66+
curl -sSL "$GHC_URL" -o ghc.tar.xz; \
67+
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum -c; \
68+
\
69+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
70+
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
71+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \
72+
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
73+
gpgconf --kill all; \
74+
\
75+
tar xf ghc.tar.xz; \
76+
cd "ghc-$GHC-$ARCH-unknown-linux"; \
77+
./configure --prefix "/opt/ghc/$GHC" --disable-ld-override; \
78+
make install; \
79+
# remove profiling support to save space
80+
find "/opt/ghc/$GHC/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete; \
81+
# remove some docs
82+
rm -rf "/opt/ghc/$GHC/share/"; \
83+
\
84+
rm -rf /tmp/*; \
85+
apk del --no-network .fetch-deps; \
86+
\
87+
"/opt/ghc/$GHC/bin/ghc" --version
88+
89+
ARG STACK=2.7.5
90+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
91+
92+
RUN set -eux; \
93+
apk add --no-cache --virtual .fetch-deps gnupg; \
94+
cd /tmp; \
95+
ARCH="$(apk --print-arch)"; \
96+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
97+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
98+
case "$ARCH" in \
99+
'x86_64') \
100+
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
101+
;; \
102+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
103+
esac; \
104+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
105+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum -c; \
106+
\
107+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
108+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
109+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
110+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
111+
gpgconf --kill all; \
112+
\
113+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
114+
stack config set system-ghc --global true; \
115+
stack config set install-ghc --global false; \
116+
\
117+
rm -rf /tmp/*; \
118+
apk del --no-network .fetch-deps; \
119+
\
120+
stack --version;
121+
122+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
123+
124+
CMD ["ghci"]

0 commit comments

Comments
 (0)