FROM heroku/heroku:20-build as build

ARG BUNDLE_GEMS__CONTRIBSYS__COM

ENV STACK heroku-20
ENV RACK_ENV production
ENV RAILS_ENV production
ENV PORT 8080

WORKDIR /home/application/

RUN curl -s --location https://github.com/heroku/heroku-buildpack-ruby/archive/v221.tar.gz | tar -xzC .

COPY app/ app/
COPY bin/ bin/
COPY config/ config/
COPY db/ db/
COPY lib/ lib/
COPY public/ public/
COPY vendor/ vendor/
COPY config.ru config.ru
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
COPY Rakefile Rakefile

# This avoids an asset precompile
RUN mkdir public/assets/
RUN touch public/assets/manifest-empty.json

RUN heroku-buildpack-ruby-221/bin/detect /home/application/
RUN heroku-buildpack-ruby-221/bin/compile /home/application/ /tmp/ruby/cache /tmp/ruby/env

FROM heroku/heroku:20

ENV RACK_ENV production
ENV RAILS_ENV production
ENV PORT 8080

RUN useradd --create-home application

USER application

WORKDIR /home/application/

COPY --chown=application --from=build /home/application/app/ /home/application/app/
COPY --chown=application --from=build /home/application/bin/ /home/application/bin/
COPY --chown=application --from=build /home/application/config/ /home/application/config/
COPY --chown=application --from=build /home/application/db/ /home/application/db/
COPY --chown=application --from=build /home/application/lib/ /home/application/lib/
COPY --chown=application --from=build /home/application/public/ /home/application/public/
COPY --chown=application --from=build /home/application/vendor/ /home/application/vendor/
COPY --chown=application --from=build /home/application/config.ru /home/application/config.ru
COPY --chown=application --from=build /home/application/Gemfile /home/application/Gemfile
COPY --chown=application --from=build /home/application/Gemfile.lock /home/application/Gemfile.lock
COPY --chown=application --from=build /home/application/Rakefile /home/application/Rakefile
COPY --chown=application --from=build /home/application/.profile.d/ /home/application/.profile.d/

EXPOSE $PORT

SHELL ["bin/docker-ruby-entrypoint"]

ENTRYPOINT ["bin/docker-ruby-entrypoint"]

CMD ["bin/rails", "server"]