######################
# Stage: dependencies
FROM ruby:3.0.1 as dependencies

ENV RAILS_ENV production

RUN apt update && apt install -y libpq-dev

WORKDIR /app

ADD Gemfile* /app/
RUN bundle install --jobs $(nproc) --retry 3 --without development test \
  && rm -rf /usr/local/bundle/cache/*.gem \
  && find /usr/local/bundle/gems/ -name "*.c" -delete \
  && find /usr/local/bundle/gems/ -name "*.o" -delete

ADD . /app

RUN rm -rf test

###############################
# Stage app
FROM ruby:3.0.1 as app

RUN apt update && apt install -y cron curl libpq-dev postgresql-client

ENV RAILS_LOG_TO_STDOUT true
ENV RAILS_SERVE_STATIC_FILES true
ENV RAILS_ENV production

COPY --from=dependencies /usr/local/bundle/ /usr/local/bundle/
COPY --from=dependencies /app /app
RUN rm -rf 'test tmp/*'
COPY config/database.container.yml /app/config/database.yml

WORKDIR /app
EXPOSE 3000
CMD ["docker/startup.sh"]
