Caching docker build step
This tip was a complete day-saver. Building and rebuilding can take up a lot of time - so caching is essential.
I nailed the caching of the basic steps quite fast, since this works out of the box for Docker, but I was left with the actually assembling of dependencies. The concept is actually quite simple, the fewer layers you have the better, but for this specific step we want to enable extra layers for caching.
Dockerfile would look as follows:
# Copy your application files and dependency listings COPY . /usr/src/app # Set working directory WORKDIR /usr/src/app # Install dependencies RUN carton install --deployment
By splitting and reordering the steps:
# Set working directory WORKDIR /usr/src/app # Copy your dependency listings COPY cpanfile.snapshot /usr/src/app COPY cpanfile /usr/src/app # Install dependencies RUN carton install --deployment # Copy your application files COPY . /usr/src/app
The step of installing dependencies are isolated and is no longer mixed with the actual staging of the application files.