Lawrence Chou
Joined
Activity
Posted in Docker Basics for Rails Discussion
Thanks for the great tutorial! I am a beginner in dockerizing rails app and get started with this tutorial. I realized some optimization may have been omitted to keep the tutorial concise. Following are some optimization tricks I found useful if starting from the Dockerfile :)
Add (at least)
node_modulesand.gitinto a.dockerignorefile, so theCOPY . /app/step could skip these files. (This could save you a log of time/docker image size when .git is huge)Avoid the error: 'A server is already running. Check /project/tmp/pids/server.pid. Exiting' with an
entrypoint.shscript.
Refer to Docker docs - Sample applications - Rails and PostgreSQL for the complete script, and don't forget to change#!/bin/bashto#!/bin/shsince we are using Alpine in this tutorial.Avoid needing to run
yarn installagain after change the source code and re-build image.
Instead of:
COPY . /app/
ENV BUNDLE_PATH /gems
RUN yarn install
RUN bundle install
do:
ENV BUNDLE_PATH /gems
COPY package.json yarn.lock /app/
RUN yarn install
COPY Gemfile Gemfile.lock /app/
RUN bundle install
# Steps above could be cached most of the time when re-building image
# Copy source code after dependencies installed
COPY . /app/