-
-
Save mattwelke/6c2076a33f1aa7e77c410bcfc5bce724 to your computer and use it in GitHub Desktop.
jruby dockerize
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 mcr.microsoft.com/openjdk/jdk:17-ubuntu as build-java | |
# Create a custom Java runtime | |
RUN $JAVA_HOME/bin/jlink \ | |
--add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.management.rmi,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.se,java.security.jgss,java.security.sasl,java.smartcardio,java.sql,java.sql.rowset,java.transaction.xa,java.xml,java.xml.crypto,jdk.accessibility,jdk.attach,jdk.charsets,jdk.compiler,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.dynalink,jdk.editpad,jdk.hotspot.agent,jdk.httpserver,jdk.internal.ed,jdk.internal.jvmstat,jdk.internal.le,jdk.internal.opt,jdk.internal.vm.ci,jdk.internal.vm.compiler,jdk.internal.vm.compiler.management,jdk.jartool,jdk.javadoc,jdk.jcmd,jdk.jconsole,jdk.jdeps,jdk.jdi,jdk.jdwp.agent,jdk.jfr,jdk.jlink,jdk.jpackage,jdk.jshell,jdk.jsobject,jdk.jstatd,jdk.localedata,jdk.management,jdk.management.agent,jdk.management.jfr,jdk.naming.dns,jdk.naming.rmi,jdk.net,jdk.nio.mapmode,jdk.random,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsupported,jdk.unsupported.desktop,jdk.xml.dom,jdk.zipfs \ | |
--strip-java-debug-attributes \ | |
--no-man-pages \ | |
--no-header-files \ | |
--compress=2 \ | |
--output /javaruntime | |
FROM openjdk:11-jre-buster as build-ruby | |
# Prereqs for downloading JRuby | |
RUN apt-get update && apt-get install -y curl | |
# Download JRuby to download the gems and jars | |
ENV JRUBY_VERSION 9.3.1.0 | |
ENV JRUBY_SHA256 4a9778c114452c0227e10e6718b2c5e128b310b9c6551be93bdd938888f3c418 | |
RUN mkdir /opt/jruby \ | |
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \ | |
&& echo "$JRUBY_SHA256 /tmp/jruby.tar.gz" | sha256sum -c - \ | |
&& tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \ | |
&& rm /tmp/jruby.tar.gz \ | |
&& update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1 | |
ENV PATH /opt/jruby/bin:$PATH | |
# Skip installing gem documentation | |
RUN mkdir -p /opt/jruby/etc \ | |
&& { \ | |
echo 'install: --no-document'; \ | |
echo 'update: --no-document'; \ | |
} >> /opt/jruby/etc/gemrc | |
RUN gem install bundler:1.17.3 rake net-telnet xmlrpc | |
# Download gems | |
COPY Gemfile Gemfile.lock ./ | |
RUN bundle _1.17.3_ install --binstubs | |
# Download jars | |
COPY Jarfile Jarfile.lock ./ | |
RUN bundle exec jbundle | |
FROM debian:buster-slim | |
ENV LANG en_US.UTF-8 | |
ENV JAVA_HOME /usr/lib/jvm/msopenjdk-17-amd64 | |
ENV PATH "${JAVA_HOME}/bin:${PATH}" | |
# Prereqs for downloading JRuby | |
RUN apt-get update && apt-get install -y curl | |
# Download JRuby to run the app | |
ENV JRUBY_VERSION 9.3.1.0 | |
ENV JRUBY_SHA256 4a9778c114452c0227e10e6718b2c5e128b310b9c6551be93bdd938888f3c418 | |
RUN mkdir /opt/jruby \ | |
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \ | |
&& echo "$JRUBY_SHA256 /tmp/jruby.tar.gz" | sha256sum -c - \ | |
&& tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \ | |
&& rm /tmp/jruby.tar.gz \ | |
&& update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1 | |
ENV PATH /opt/jruby/bin:$PATH | |
# Copy from builder images | |
COPY --from=build-java /javaruntime $JAVA_HOME | |
ENV _GEM_PATH /opt/jruby/lib/ruby/gems/shared | |
COPY --from=build-ruby $_GEM_PATH $_GEM_PATH | |
# Copy app code | |
COPY Gemfile ./ | |
COPY Gemfile.lock ./ | |
COPY Jarfile ./ | |
COPY Jarfile.lock ./ | |
COPY server.rb ./ | |
EXPOSE 7000 | |
ENTRYPOINT [ "ruby", "server.rb" ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment