How to make Dockerfile Deploys faster
Make Dockerfile Deploy faster by structuring your Dockerfile to maximize efficiency by leveraging the Docker build cache:
Gems installed via Bundler
In order for the Docker build cache to cache gems installed via Bundler:
-
Add the Gemfile and Gemfile.lock files to the image.
-
Run
bundle install
, before adding the rest of the repo (viaADD .
).
Here’s an example of how that might look in a Dockerfile:
FROM ruby
# If needed, install system dependencies here
# Add Gemfile and Gemfile.lock first for caching
ADD Gemfile /app/
ADD Gemfile.lock /app/
WORKDIR /app
RUN bundle install
ADD . /app
# If needed, add additional RUN commands here
Packages installed via NPM
In order for the Docker build cache to cache packages installed via npm:
-
Add the
package.json
file to the image. -
Run
npm install
, before adding the rest of the repo (viaADD .
).
Here’s an example of how that might look in a Dockerfile:
FROM node
# If needed, install system dependencies here
# Add package.json before rest of repo for caching
ADD package.json /app/
WORKDIR /app
RUN npm install
ADD . /app
# If needed, add additional RUN commands here
Packages installed via PIP
In order for the Docker build cache to cache packages installed via pip:
-
Add the
requirements.txt
file to the image. -
Run
pip install
, before adding the rest of the repo (viaADD .
).
Here’s an example of how that might look in a Dockerfile:
FROM python
# If needed, install system dependencies here
# Add requirements.txt before rest of repo for caching
ADD requirements.txt /app/
WORKDIR /app
RUN pip install -r requirements.txt
ADD . /app
Was this page helpful?