|
| 1 | +FROM alpine:3.3 |
| 2 | + |
| 3 | +ENV RUBY_MAJOR 2.3 |
| 4 | +ENV RUBY_VERSION 2.3.0 |
| 5 | +ENV RUBY_DOWNLOAD_SHA256 ba5ba60e5f1aa21b4ef8e9bf35b9ddb57286cb546aac4b5a28c71f459467e507 |
| 6 | +ENV RUBYGEMS_VERSION 2.5.1 |
| 7 | + |
| 8 | +# skip installing gem documentation |
| 9 | +RUN echo -e 'install: --no-document\nupdate: --no-document' >> "$HOME/.gemrc" |
| 10 | + |
| 11 | +RUN set -x \ |
| 12 | + && apk add --no-cache --virtual .ruby-builddeps \ |
| 13 | + autoconf \ |
| 14 | + bison \ |
| 15 | + bzip2 \ |
| 16 | + bzip2-dev \ |
| 17 | + ca-certificates \ |
| 18 | + coreutils \ |
| 19 | + curl \ |
| 20 | + gcc \ |
| 21 | + gdbm-dev \ |
| 22 | + glib-dev \ |
| 23 | + libc-dev \ |
| 24 | + libedit-dev \ |
| 25 | + libffi-dev \ |
| 26 | + libxml2-dev \ |
| 27 | + libxslt-dev \ |
| 28 | + linux-headers \ |
| 29 | + make \ |
| 30 | + ncurses-dev \ |
| 31 | + openssl-dev \ |
| 32 | + procps \ |
| 33 | + ruby \ |
| 34 | + yaml-dev \ |
| 35 | + zlib-dev \ |
| 36 | + && curl -fSL -o ruby.tar.gz "http://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz" \ |
| 37 | + && echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum -c - \ |
| 38 | + && mkdir -p /usr/src \ |
| 39 | + && tar -xzf ruby.tar.gz -C /usr/src \ |
| 40 | + && mv "/usr/src/ruby-$RUBY_VERSION" /usr/src/ruby \ |
| 41 | + && rm ruby.tar.gz \ |
| 42 | + && cd /usr/src/ruby \ |
| 43 | + && autoconf \ |
| 44 | + # the configure script does not detect isnan/isinf as macros |
| 45 | + && ac_cv_func_isnan=yes ac_cv_func_isinf=yes ./configure --disable-install-doc \ |
| 46 | + && make -j"$(nproc)" \ |
| 47 | + && make install \ |
| 48 | + && gem update --system $RUBYGEMS_VERSION \ |
| 49 | + && runDeps="$( \ |
| 50 | + scanelf --needed --nobanner --recursive /usr/local \ |
| 51 | + | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ |
| 52 | + | sort -u \ |
| 53 | + | xargs -r apk info --installed \ |
| 54 | + | sort -u \ |
| 55 | + )" \ |
| 56 | + && apk add --virtual .ruby-rundeps $runDeps \ |
| 57 | + bzip2 \ |
| 58 | + ca-certificates \ |
| 59 | + curl \ |
| 60 | + libffi-dev \ |
| 61 | + openssl-dev \ |
| 62 | + yaml-dev \ |
| 63 | + procps \ |
| 64 | + zlib-dev \ |
| 65 | + && apk del .ruby-builddeps \ |
| 66 | + && rm -r /usr/src/ruby |
| 67 | + |
| 68 | +# install things globally, for great justice |
| 69 | +ENV GEM_HOME /usr/local/bundle |
| 70 | +ENV PATH $GEM_HOME/bin:$PATH |
| 71 | + |
| 72 | +ENV BUNDLER_VERSION 1.11.2 |
| 73 | + |
| 74 | +RUN gem install bundler --version "$BUNDLER_VERSION" \ |
| 75 | + && bundle config --global path "$GEM_HOME" \ |
| 76 | + && bundle config --global bin "$GEM_HOME/bin" |
| 77 | + |
| 78 | +# don't create ".bundle" in all our apps |
| 79 | +ENV BUNDLE_APP_CONFIG $GEM_HOME |
| 80 | + |
| 81 | +CMD [ "irb" ] |
0 commit comments