website-public/Dockerfile

30 lines
856 B
Docker

# use Ruby as the foundation since Jekyll needs it
# Alpine to keep the container a bit lighter
FROM ruby:3-alpine AS builder
LABEL stage=milksad-website-builder
# install necessary system dependencies for Jekyll and plugins
RUN apk update && \
apk add g++ make imagemagick imagemagick-dev imagemagick-libs && \
rm -rf /var/cache/apk/*
RUN mkdir -p /home
# also creates user directory
RUN adduser -D builder
USER builder
RUN mkdir -p /home/builder/workdir
WORKDIR /home/builder/workdir
# copy the Jekyll website contents into the container
# this includes Gemfile and Gemfile.lock
# reminder: .dockerignore should specify a good ignorelist for this
COPY --chown=builder . .
# install Gems
RUN bundle install
# do the initial website build
RUN jekyll build
# note: this Dockerfile is no longer responsible for serving the content to end users