Skip to content

Instantly share code, notes, and snippets.

@aaronjensen
Created November 2, 2016 00:07
Show Gist options
  • Save aaronjensen/b3a18ca25a1175a4413cb6c8a32fc213 to your computer and use it in GitHub Desktop.
Save aaronjensen/b3a18ca25a1175a4413cb6c8a32fc213 to your computer and use it in GitHub Desktop.
FROM erlang:19.1-slim
ENV GOSU_VERSION 1.9
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
&& dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true \
&& apt-get purge -y --auto-remove ca-certificates wget
ENV ELIXIR_VERSION="v1.3.4" \
LANG=C.UTF-8
RUN set -xe \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
autoconf \
automake \
bzip2 \
ca-certificates \
curl \
file \
g++ \
gcc \
git \
libelf1 \
libfontconfig \
make \
&& rm -rf /var/lib/apt/lists/*
# Generate the elixir sha by downloading the file and running shasum:
# wget https://github.com/elixir-lang/elixir/archive/<version>.tar.gz
# shasum -a 256 <version>.tar.gz
RUN set -xe \
&& ELIXIR_DOWNLOAD_URL="https://github.com/elixir-lang/elixir/archive/${ELIXIR_VERSION#*@}.tar.gz" \
&& ELIXIR_DOWNLOAD_SHA256="f5ee5353d8dbe610b1dfd276d22f2038d57d9a7d3cea69dac10da2b098bd2033" \
&& curl -fSL -o elixir-src.tar.gz $ELIXIR_DOWNLOAD_URL \
&& echo "$ELIXIR_DOWNLOAD_SHA256 elixir-src.tar.gz" | sha256sum -c - \
&& mkdir -p /usr/src/elixir-src \
&& tar -xzf elixir-src.tar.gz -C /usr/src/elixir-src --strip-components=1 \
&& rm elixir-src.tar.gz \
&& cd /usr/src/elixir-src \
&& make -j$(nproc) \
&& make install
# gpg keys listed at https://github.com/nodejs/node
RUN set -ex \
&& for key in \
9554F04D7259F04124DE6B476D5A82AC7E37093B \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
ENV NODE_VERSION 6.5.0
RUN buildDeps='\
xz-utils' \
&& set -x \
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
&& apt-get purge -y --auto-remove $buildDeps
# Install yarn
RUN set -xe \
&& apt-key adv --keyserver pgp.mit.edu --recv D101F7899D41F3C3\
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update && apt-get install -y yarn --no-install-recommends
# Enable unsafe-perm so npm doesn't override our TMPDIR like a fool
# https://github.com/npm/npm/issues/13325
RUN npm config set unsafe-perm true
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["iex"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment