|
|
@@ -0,0 +1,48 @@
|
|
|
+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
|