Created
April 24, 2020 09:23
-
-
Save forslund/6576632857b636d0aa5ffe8c27914b54 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
FROM ubuntu:xenial as builder | |
# Grab dependencies | |
RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes \ | |
curl \ | |
jq \ | |
squashfs-tools | |
# Grab the core snap (for backwards compatibility) from the stable channel and | |
# unpack it in the proper place. | |
RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core' | jq '.download_url' -r) --output core.snap | |
RUN mkdir -p /snap/core | |
RUN unsquashfs -d /snap/core/current core.snap | |
# Grab the core18 snap (which snapcraft uses as a base) from the stable channel | |
# and unpack it in the proper place. | |
RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core18' | jq '.download_url' -r) --output core18.snap | |
RUN mkdir -p /snap/core18 | |
RUN unsquashfs -d /snap/core18/current core18.snap | |
# Grab the snapcraft snap from the candidate channel and unpack it in the proper | |
# place. | |
RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel=candidate' | jq '.download_url' -r) --output snapcraft.snap | |
RUN mkdir -p /snap/snapcraft | |
RUN unsquashfs -d /snap/snapcraft/current snapcraft.snap | |
# Create a snapcraft runner (TODO: move version detection to the core of | |
# snapcraft). | |
RUN mkdir -p /snap/bin | |
RUN echo "#!/bin/sh" > /snap/bin/snapcraft | |
RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml)" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft | |
RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft | |
RUN chmod +x /snap/bin/snapcraft | |
# Multi-stage build, only need the snaps from the builder. Copy them one at a | |
# time so they can be cached. | |
FROM ubuntu:xenial | |
COPY --from=builder /snap/core /snap/core | |
COPY --from=builder /snap/core18 /snap/core18 | |
COPY --from=builder /snap/snapcraft /snap/snapcraft | |
COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft | |
# Generate locale | |
RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes sudo locales && locale-gen en_US.UTF-8 | |
# Set the proper environment | |
ENV LANG="en_US.UTF-8" | |
ENV LANGUAGE="en_US:en" | |
ENV LC_ALL="en_US.UTF-8" | |
ENV PATH="/snap/bin:$PATH" | |
ENV SNAP="/snap/snapcraft/current" | |
ENV SNAP_NAME="snapcraft" | |
ENV SNAP_ARCH="amd64" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment