Skip to content

Add Alpine to all versions #65

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 29, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ env:
- VERSION=2.3 VARIANT=alpine
- VERSION=2.2 VARIANT=
- VERSION=2.2 VARIANT=slim
- VERSION=2.2 VARIANT=alpine
- VERSION=2.1 VARIANT=
- VERSION=2.1 VARIANT=slim
- VERSION=2.1 VARIANT=alpine
- VERSION=2.0 VARIANT=
- VERSION=2.0 VARIANT=slim

Expand Down
81 changes: 81 additions & 0 deletions 2.1/alpine/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
FROM alpine:3.3

ENV RUBY_MAJOR 2.1
ENV RUBY_VERSION 2.1.8
ENV RUBY_DOWNLOAD_SHA256 afd832b8d5ecb2e3e1477ec6a9408fdf9898ee73e4c5df17a2b2cb36bd1c355d
ENV RUBYGEMS_VERSION 2.5.1

# skip installing gem documentation
RUN echo -e 'install: --no-document\nupdate: --no-document' >> "$HOME/.gemrc"

RUN set -x \
&& apk add --no-cache --virtual .ruby-builddeps \
autoconf \
bison \
bzip2 \
bzip2-dev \
ca-certificates \
coreutils \
curl \
gcc \
gdbm-dev \
glib-dev \
libc-dev \
libedit-dev \
libffi-dev \
libxml2-dev \
libxslt-dev \
linux-headers \
make \
ncurses-dev \
openssl-dev \
procps \
ruby \
yaml-dev \
zlib-dev \
&& curl -fSL -o ruby.tar.gz "http://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz" \
&& echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum -c - \
&& mkdir -p /usr/src \
&& tar -xzf ruby.tar.gz -C /usr/src \
&& mv "/usr/src/ruby-$RUBY_VERSION" /usr/src/ruby \
&& rm ruby.tar.gz \
&& cd /usr/src/ruby \
&& autoconf \
# the configure script does not detect isnan/isinf as macros
&& ac_cv_func_isnan=yes ac_cv_func_isinf=yes ./configure --disable-install-doc \
&& make -j"$(nproc)" \
&& make install \
&& gem update --system $RUBYGEMS_VERSION \
&& runDeps="$( \
scanelf --needed --nobanner --recursive /usr/local \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u \
)" \
&& apk add --virtual .ruby-rundeps $runDeps \
bzip2 \
ca-certificates \
curl \
libffi-dev \
openssl-dev \
yaml-dev \
procps \
zlib-dev \
&& apk del .ruby-builddeps \
&& rm -r /usr/src/ruby

# install things globally, for great justice
ENV GEM_HOME /usr/local/bundle
ENV PATH $GEM_HOME/bin:$PATH

ENV BUNDLER_VERSION 1.11.2

RUN gem install bundler --version "$BUNDLER_VERSION" \
&& bundle config --global path "$GEM_HOME" \
&& bundle config --global bin "$GEM_HOME/bin"

# don't create ".bundle" in all our apps
ENV BUNDLE_APP_CONFIG $GEM_HOME

CMD [ "irb" ]
81 changes: 81 additions & 0 deletions 2.2/alpine/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
FROM alpine:3.3

ENV RUBY_MAJOR 2.2
ENV RUBY_VERSION 2.2.4
ENV RUBY_DOWNLOAD_SHA256 b6eff568b48e0fda76e5a36333175df049b204e91217aa32a65153cc0cdcb761
ENV RUBYGEMS_VERSION 2.5.1

# skip installing gem documentation
RUN echo -e 'install: --no-document\nupdate: --no-document' >> "$HOME/.gemrc"

RUN set -x \
&& apk add --no-cache --virtual .ruby-builddeps \
autoconf \
bison \
bzip2 \
bzip2-dev \
ca-certificates \
coreutils \
curl \
gcc \
gdbm-dev \
glib-dev \
libc-dev \
libedit-dev \
libffi-dev \
libxml2-dev \
libxslt-dev \
linux-headers \
make \
ncurses-dev \
openssl-dev \
procps \
ruby \
yaml-dev \
zlib-dev \
&& curl -fSL -o ruby.tar.gz "http://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz" \
&& echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum -c - \
&& mkdir -p /usr/src \
&& tar -xzf ruby.tar.gz -C /usr/src \
&& mv "/usr/src/ruby-$RUBY_VERSION" /usr/src/ruby \
&& rm ruby.tar.gz \
&& cd /usr/src/ruby \
&& autoconf \
# the configure script does not detect isnan/isinf as macros
&& ac_cv_func_isnan=yes ac_cv_func_isinf=yes ./configure --disable-install-doc \
&& make -j"$(nproc)" \
&& make install \
&& gem update --system $RUBYGEMS_VERSION \
&& runDeps="$( \
scanelf --needed --nobanner --recursive /usr/local \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u \
)" \
&& apk add --virtual .ruby-rundeps $runDeps \
bzip2 \
ca-certificates \
curl \
libffi-dev \
openssl-dev \
yaml-dev \
procps \
zlib-dev \
&& apk del .ruby-builddeps \
&& rm -r /usr/src/ruby

# install things globally, for great justice
ENV GEM_HOME /usr/local/bundle
ENV PATH $GEM_HOME/bin:$PATH

ENV BUNDLER_VERSION 1.11.2

RUN gem install bundler --version "$BUNDLER_VERSION" \
&& bundle config --global path "$GEM_HOME" \
&& bundle config --global bin "$GEM_HOME/bin"

# don't create ".bundle" in all our apps
ENV BUNDLE_APP_CONFIG $GEM_HOME

CMD [ "irb" ]
9 changes: 9 additions & 0 deletions update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ latest_gem_version() {
rubygems="$(latest_gem_version rubygems-update)"
bundler="$(latest_gem_version bundler)"

travisEnv=
for version in "${versions[@]}"; do
fullVersion="$(curl -sSL --compressed "http://cache.ruby-lang.org/pub/ruby/$version/" \
| grep -E '<a href="ruby-'"$version"'.[^"]+\.tar\.bz2' \
Expand All @@ -35,4 +36,12 @@ for version in "${versions[@]}"; do
' "$version"{/,/*/}Dockerfile
sed -ri 's/^(FROM ruby):.*/\1:'"$version"'/' "$version/"*"/Dockerfile"
)
for variant in alpine slim; do
[ -d "$version/$variant" ] || continue
travisEnv='\n - VERSION='"$version VARIANT=$variant$travisEnv"
done
travisEnv='\n - VERSION='"$version VARIANT=$travisEnv"
done

travis="$(awk -v 'RS=\n\n' '$1 == "env:" { $0 = "env:'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)"
echo "$travis" > .travis.yml