Created
September 16, 2021 00:31
-
-
Save luislavena/1036d0d9bc4ecb17a28755c709dfdd27 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# syntax = docker/dockerfile:1.2 | |
# --- | |
FROM alpine:3.12 AS base | |
# upgrade system and install dependencies | |
RUN set -eux; \ | |
apk upgrade --no-cache | |
# download and copy crystal | |
# TODO: combine with compiler installation | |
RUN set -eux; \ | |
apk add --no-cache \ | |
curl \ | |
gc-dev \ | |
gcc \ | |
git \ | |
libevent-static \ | |
musl-dev \ | |
openssl-dev \ | |
openssl-libs-static \ | |
pcre-dev \ | |
yaml-static \ | |
zlib-dev \ | |
zlib-static \ | |
; | |
RUN set -eux; \ | |
export CRYSTAL_VERSION=1.1.1; \ | |
cd /tmp; \ | |
{ \ | |
curl --fail -Lo crystal.tar.gz https://github.com/crystal-lang/crystal/releases/download/${CRYSTAL_VERSION}/crystal-${CRYSTAL_VERSION}-1-linux-x86_64.tar.gz; \ | |
tar -xf crystal.tar.gz; \ | |
rm crystal-${CRYSTAL_VERSION}-1/lib/crystal/lib/libgc.a; \ | |
mv crystal-${CRYSTAL_VERSION}-1 /usr/local/crystal; \ | |
rm crystal.tar.gz; \ | |
}; \ | |
# smoke test | |
PATH=/usr/local/crystal/bin:$PATH; \ | |
[ "$(command -v crystal)" = '/usr/local/crystal/bin/crystal' ]; \ | |
[ "$(command -v shards)" = '/usr/local/crystal/bin/shards' ]; \ | |
crystal --version; \ | |
shards --version | |
ENV PATH /usr/local/crystal/bin:$PATH | |
# --- | |
FROM base AS builder | |
WORKDIR /app | |
# install dependencies | |
RUN set -eux; \ | |
apk add --no-cache \ | |
sqlite-dev \ | |
sqlite-static \ | |
; | |
# install application dependencies | |
COPY shard.* /app/ | |
RUN --mount=type=cache,target=/root/.cache/shards \ | |
set -eux; \ | |
shards install --without-development --frozen | |
# copy application source | |
COPY . /app/ | |
# build binaries | |
RUN --mount=type=cache,target=/root/.cache/crystal \ | |
set -eux; \ | |
shards build --without-development --static --release | |
# --- | |
FROM gcr.io/distroless/static:latest | |
COPY --from=builder /app/bin/myapp / | |
EXPOSE 8080 | |
ENTRYPOINT [ "/myapp" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Image] | |
Layer: 0 | |
Digest: sha256:e6688e911f15729983816cb784a4ae88c7405593c30bc88f6216e24c3363bf26 | |
Size: 5577054 | |
MediaType: application/vnd.docker.image.rootfs.diff.tar.gzip | |
Layer: 1 | |
Digest: sha256:10b4dfd6553f51b55208f5275794d87f6742e279a261a5682b0774998e19fba7 | |
Size: 22787 | |
MediaType: application/vnd.docker.image.rootfs.diff.tar.gzip | |
Layer: 2 | |
Digest: sha256:28d572ced56bc2dc4f39e1403b9d736d97c67a7b0003e17ccb7f55ae76aae5a4 | |
Size: 180610283 | |
MediaType: application/vnd.docker.image.rootfs.diff.tar.gzip | |
Layer: 3 | |
Digest: sha256:52ea95bc1f62846e9250e8f6975364e0d09ab87e7f652b3c6b2bfa68baa19a02 | |
Size: 86274994 | |
MediaType: application/vnd.docker.image.rootfs.diff.tar.gzip | |
[alpine-baselayout] | |
Version: 3.2.0-r7 | |
Type: apk | |
Found by: apkdb-cataloger | |
[alpine-keys] | |
Version: 2.2-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[apk-tools] | |
Version: 2.10.8-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[binutils] | |
Version: 2.34-r2 | |
Type: apk | |
Found by: apkdb-cataloger | |
[busybox] | |
Version: 1.31.1-r20 | |
Type: apk | |
Found by: apkdb-cataloger | |
[ca-certificates] | |
Version: 20191127-r4 | |
Type: apk | |
Found by: apkdb-cataloger | |
[ca-certificates-bundle] | |
Version: 20191127-r4 | |
Type: apk | |
Found by: apkdb-cataloger | |
[curl] | |
Version: 7.79.0-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[expat] | |
Version: 2.2.9-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[gc] | |
Version: 8.0.4-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[gc-dev] | |
Version: 8.0.4-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[gcc] | |
Version: 9.3.0-r2 | |
Type: apk | |
Found by: apkdb-cataloger | |
[git] | |
Version: 2.26.3-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[gmp] | |
Version: 6.2.0-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[isl] | |
Version: 0.18-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libatomic] | |
Version: 9.3.0-r2 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libc-utils] | |
Version: 0.7.2-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libcrypto1.1] | |
Version: 1.1.1l-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libcurl] | |
Version: 7.79.0-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libevent-static] | |
Version: 2.1.11-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libgc++] | |
Version: 8.0.4-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libgcc] | |
Version: 9.3.0-r2 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libgomp] | |
Version: 9.3.0-r2 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libgphobos] | |
Version: 9.3.0-r2 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libpcre16] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libpcre32] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libpcrecpp] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libssl1.1] | |
Version: 1.1.1l-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libstdc++] | |
Version: 9.3.0-r2 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libtls-standalone] | |
Version: 2.9.1-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[mpc1] | |
Version: 1.1.0-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[mpfr4] | |
Version: 4.0.2-r4 | |
Type: apk | |
Found by: apkdb-cataloger | |
[musl] | |
Version: 1.1.24-r10 | |
Type: apk | |
Found by: apkdb-cataloger | |
[musl-dev] | |
Version: 1.1.24-r10 | |
Type: apk | |
Found by: apkdb-cataloger | |
[musl-utils] | |
Version: 1.1.24-r10 | |
Type: apk | |
Found by: apkdb-cataloger | |
[nghttp2-libs] | |
Version: 1.41.0-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[openssl-dev] | |
Version: 1.1.1l-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[openssl-libs-static] | |
Version: 1.1.1l-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[pcre] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[pcre-dev] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[pcre2] | |
Version: 10.35-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[pkgconf] | |
Version: 1.7.2-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[scanelf] | |
Version: 1.2.6-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[ssl_client] | |
Version: 1.31.1-r20 | |
Type: apk | |
Found by: apkdb-cataloger | |
[yaml-static] | |
Version: 0.2.4-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[zlib] | |
Version: 1.2.11-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[zlib-dev] | |
Version: 1.2.11-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[zlib-static] | |
Version: 1.2.11-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Image] | |
Layer: 0 | |
Digest: sha256:f1dd685eb59e7d19dd353b02c4679d9fafd21ccffe1f51960e6c3645f3ceb0cd | |
Size: 5608665 | |
MediaType: application/vnd.docker.image.rootfs.diff.tar.gzip | |
Layer: 1 | |
Digest: sha256:4b6e462f44fc578188c7850202c7817b7316dbbfe072de281f9808f4a8043aa5 | |
Size: 23388 | |
MediaType: application/vnd.docker.image.rootfs.diff.tar.gzip | |
Layer: 2 | |
Digest: sha256:6babccbb93398d9089034c50e2ee9a8b32618f6e4e28b3dde069e97c04d28c18 | |
Size: 161431950 | |
MediaType: application/vnd.docker.image.rootfs.diff.tar.gzip | |
Layer: 3 | |
Digest: sha256:f32f7da37a4653c241a70faf6ddcd1be93d31982c5d6f9667d65a0fdddb560b1 | |
Size: 86274994 | |
MediaType: application/vnd.docker.image.rootfs.diff.tar.gzip | |
[alpine-baselayout] | |
Version: 3.2.0-r8 | |
Type: apk | |
Found by: apkdb-cataloger | |
[alpine-keys] | |
Version: 2.2-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[apk-tools] | |
Version: 2.12.7-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[binutils] | |
Version: 2.35.2-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[brotli-libs] | |
Version: 1.0.9-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[busybox] | |
Version: 1.32.1-r6 | |
Type: apk | |
Found by: apkdb-cataloger | |
[ca-certificates] | |
Version: 20191127-r5 | |
Type: apk | |
Found by: apkdb-cataloger | |
[ca-certificates-bundle] | |
Version: 20191127-r5 | |
Type: apk | |
Found by: apkdb-cataloger | |
[curl] | |
Version: 7.79.0-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[expat] | |
Version: 2.2.10-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[gc] | |
Version: 8.0.4-r4 | |
Type: apk | |
Found by: apkdb-cataloger | |
[gc-dev] | |
Version: 8.0.4-r4 | |
Type: apk | |
Found by: apkdb-cataloger | |
[gcc] | |
Version: 10.2.1_pre1-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[git] | |
Version: 2.30.2-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[gmp] | |
Version: 6.2.1-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[isl22] | |
Version: 0.22-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libatomic] | |
Version: 10.2.1_pre1-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libc-utils] | |
Version: 0.7.2-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libcrypto1.1] | |
Version: 1.1.1l-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libcurl] | |
Version: 7.79.0-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libevent-static] | |
Version: 2.1.12-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libgc++] | |
Version: 8.0.4-r4 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libgcc] | |
Version: 10.2.1_pre1-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libgomp] | |
Version: 10.2.1_pre1-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libgphobos] | |
Version: 10.2.1_pre1-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libpcre16] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libpcre32] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libpcrecpp] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libssl1.1] | |
Version: 1.1.1l-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libstdc++] | |
Version: 10.2.1_pre1-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[libtls-standalone] | |
Version: 2.9.1-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[mpc1] | |
Version: 1.2.0-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[mpfr4] | |
Version: 4.1.0-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[musl] | |
Version: 1.2.2-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[musl-dev] | |
Version: 1.2.2-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[musl-utils] | |
Version: 1.2.2-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[nghttp2-libs] | |
Version: 1.42.0-r1 | |
Type: apk | |
Found by: apkdb-cataloger | |
[openssl-dev] | |
Version: 1.1.1l-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[openssl-libs-static] | |
Version: 1.1.1l-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[pcre] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[pcre-dev] | |
Version: 8.44-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[pcre2] | |
Version: 10.36-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[pkgconf] | |
Version: 1.7.3-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[scanelf] | |
Version: 1.2.8-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[ssl_client] | |
Version: 1.32.1-r6 | |
Type: apk | |
Found by: apkdb-cataloger | |
[yaml-static] | |
Version: 0.2.5-r0 | |
Type: apk | |
Found by: apkdb-cataloger | |
[zlib] | |
Version: 1.2.11-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[zlib-dev] | |
Version: 1.2.11-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
[zlib-static] | |
Version: 1.2.11-r3 | |
Type: apk | |
Found by: apkdb-cataloger | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment