FROM ruby:2.6.3-alpine as builder # Add git to clone Rspec repositories and build-base to compile nokogiri gem # Additionally, we need to set timezone information RUN apk add --update git build-base postgresql-dev yarn tzdata && \ cp /usr/share/zoneinfo/UTC /etc/localtime && \ echo "UTC" > /etc/timezone # Make an app directory, just like Heroku. RUN mkdir /app WORKDIR /app # Copying the Gemfile separately allows the image to be cached. # These steps are not rerun unless the Gemfile or Gemfile.lock is changed. COPY Gemfile Gemfile.lock /app/ RUN bundle install --jobs 4 --retry 5 --without development test # Again, copy seperately so we can cache this step. COPY package.json yarn.lock /app/ RUN yarn install # Copy our app over now COPY . /app # And compile our assets RUN rails assets:precompile && \ rm -rf node_modules tmp log FROM ruby:2.6.3-alpine RUN apk add --update postgresql-dev tzdata && \ cp /usr/share/zoneinfo/UTC /etc/localtime && \ echo "UTC" > /etc/timezone # Make an app directory, just like Heroku. RUN mkdir /app WORKDIR /app # Grab everything from the builder COPY --from=builder /usr/local/bundle/ /usr/local/bundle/ COPY --from=builder /app/ /app/ # Copy the docker configurations over COPY config/database.yml.docker config/database.yml # Run the server EXPOSE 3000 CMD rails server -p 3000