From 99c0e7adf20e7b75277c419cc40f0d83a6328eb1 Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Tue, 20 Feb 2018 14:08:26 -0800 Subject: [PATCH] Multi-stage builds, wheee --- Dockerfile | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5243c94..850cb2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,38 @@ -FROM ruby:2.3-alpine +FROM ruby:2.3-alpine as builder -ARG BUILD_PKGS="ruby-dev openssl-dev gcc make libc-dev binutils" ARG APP_DIR=/webapp - -RUN mkdir -p ${APP_DIR}/vendor - -WORKDIR ${APP_DIR} +ARG BUILD_PKGS="ruby-dev openssl-dev gcc make libc-dev binutils" ENV GEM_HOME=${APP_DIR}/vendor/gems ENV BUNDLE_PATH=${APP_DIR}/vendor/gems ENV BUNDLE_APP_CONFIG=${APP_DIR}/vendor/gems/.bundle ENV BUNDLE_DISABLE_SHARED_GEMS=true +RUN mkdir -p ${APP_DIR}/vendor + +WORKDIR ${APP_DIR} ADD Gemfile* ${APP_DIR}/ +RUN apk add -U ${BUILD_PKGS} && \ + bundle install && \ + apk del ${BUILD_PKGS} && \ + rm -rf /var/cache/apk/* + +# Doing a multi-stage build to reset some stuff for a smaller image +FROM ruby:2.3-alpine + +ARG APP_DIR=/webapp +WORKDIR ${APP_DIR} + +COPY --from=builder ${APP_DIR} . + +ENV GEM_HOME=${APP_DIR}/vendor/gems +ENV BUNDLE_PATH=${APP_DIR}/vendor/gems +ENV BUNDLE_APP_CONFIG=${APP_DIR}/vendor/gems/.bundle +ENV BUNDLE_DISABLE_SHARED_GEMS=true + ADD app/ ${APP_DIR}/app/ ADD config.ru ${APP_DIR}/ ADD views ${APP_DIR}/views/ ADD assets ${APP_DIR}/assets/ -RUN apk add -U ${BUILD_PKGS} && \ - bundle install --without test && \ - apk del ${BUILD_PKGS} && \ - rm -rf /var/cache/apk/* - CMD bundle exec puma