Created
September 12, 2019 22:55
-
-
Save peterzhang41/124631a09c1c60016f898883da60f671 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
FROM ubuntu:bionic as builder | |
# Grab dependencies | |
RUN apt update | |
RUN apt dist-upgrade --yes | |
RUN apt install --yes curl jq squashfs-tools | |
# Grab the core snap 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 snapcraft snap 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/snapcraft?channel=stable' | 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:bionic | |
COPY --from=builder /snap/core /snap/core | |
COPY --from=builder /snap/snapcraft /snap/snapcraft | |
COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft | |
# Generate locale | |
RUN apt update && apt dist-upgrade --yes && apt 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