diff --git a/ruby.sh b/ruby.sh new file mode 100755 index 0000000..bfb8deb --- /dev/null +++ b/ruby.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +SOURCE_DIR=$(realpath $(dirname "${0}"))/ruby + +# Build Docker container +docker build -t ruby ${SOURCE_DIR} diff --git a/ruby/Dockerfile b/ruby/Dockerfile new file mode 100644 index 0000000..d74012e --- /dev/null +++ b/ruby/Dockerfile @@ -0,0 +1,33 @@ +FROM alpine:3.7 +MAINTAINER Disassembler + +RUN \ + # Install Ruby runtime dependencies + apk --no-cache add gdbm libressl readline zlib + +RUN \ + # Install Ruby build dependencies + apk --no-cache add --virtual .deps build-base autoconf gdbm-dev libressl-dev linux-headers readline-dev zlib-dev \ + # Download and unpack Ruby + && wget http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.xz -O ruby.tar.xz \ + && mkdir -p /usr/src/ruby \ + && tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1 \ + && rm ruby.tar.xz \ + && cd /usr/src/ruby \ + # Hackfix to suppress "Insecure world writable dir" warning + && sed -ni 'p;13a #define ENABLE_PATH_CHECK 0' file.c \ + # Configure compilation + hackfix to detect isnan/isinf macros + && autoconf \ + && ac_cv_func_isnan=yes ac_cv_func_isinf=yes ./configure --build=x86_64-linux-musl --disable-install-doc --enable-shared \ + # Compile and install Ruby + && make -j $(nproc) \ + && make install \ + # Install RubyGems and Bundler + && mkdir -p /usr/local/etc \ + && echo -e 'install: --no-document\nupdate: --no-document' >/usr/local/etc/gemrc \ + && gem update --system \ + # Cleanup + && cd /tmp \ + && rm -r /usr/src/ruby \ + && apk --no-cache del .deps \ + && rm -rf /root/.gem