FROM alpine:3.13 AS alpine

ARG RAILS_ROOT=/usr/src/app
ENV RAILS_ROOT=${RAILS_ROOT}

FROM alpine AS base
WORKDIR $RAILS_ROOT
RUN apk add --no-cache \
    libpq \
    libxml2 \
    libxslt \
    ruby \
    ruby-irb \
    ruby-bigdecimal \
    ruby-bundler \
    ruby-json \
    tzdata \
    shared-mime-info

FROM base as builder
RUN apk add --no-cache \
    build-base \
    curl-dev \
    git \
    libxml2-dev \
    libxslt-dev \
    pkgconf \
    postgresql-dev \
    sqlite-libs \
    sqlite-dev \
    ruby-dev \
    yaml-dev \
    zlib-dev \
    nodejs \
    yarn \
    && ( echo 'install: --no-document' ; echo 'update: --no-document' ) >>/etc/gemrc
COPY Gemfile* ./
RUN bundle config build.nokogiri --use-system-libraries \
    && bundle config set --local deployment 'true'  without 'development:test' \
    && bundle install -j4 \
    && rm -rf vendor/bundle/ruby/*/cache \
    && find vendor/bundle/ruby/*/gems/ \( -name '*.c' -o -name '*.o' \) -delete
COPY . ./

FROM base
ENV RAILS_ENV=production RAILS_LOG_TO_STDOUT=true

ARG VERSION_CODE
ENV VERSION_CODE=${VERSION_CODE}

COPY --from=builder $RAILS_ROOT $RAILS_ROOT

EXPOSE 80
RUN chmod +x bin/start
CMD [ "bin/start" ]
