Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git
# ########################################################################
#
# Copyright 2022 White Magic Software, Ltd.
#
# Creates a container image that can run ConTeXt to typeset documents.
#
# ########################################################################

LABEL org.opencontainers.image.description Configures a typesetting system.

FROM alpine:latest
ENV ENV="/etc/profile"
ENV PROFILE=/etc/profile

ENV INSTALL_DIR=/opt
ENV SOURCE_DIR=/root/source
ENV TARGET_DIR=/root/target
ENV IMAGES_DIR=/root/images
ENV THEMES_DIR=/root/themes
ENV CACHES_DIR=/root/caches
ENV FONTS_DIR=/usr/share/fonts/user
ENV DOWNLOAD_DIR=/root

ENV CONTEXT_HOME=$INSTALL_DIR/context

# ########################################################################
#
# Download all required dependencies
#
# ########################################################################
WORKDIR $DOWNLOAD_DIR

# Many fonts may be downloaded using Google's download URL. Example:
# https://fonts.google.com/download?family=Roboto%20Mono

# Fonts are repacked with minimal file set, flat directory, and license.
ADD "https://fonts.keenwrite.com/download/andada-pro.zip" ./
ADD "https://fonts.keenwrite.com/download/archivo-narrow.zip" ./
ADD "https://fonts.keenwrite.com/download/carlito.zip" ./
ADD "https://fonts.keenwrite.com/download/courier-prime.zip" ./
ADD "https://fonts.keenwrite.com/download/inconsolata.zip" ./
ADD "https://fonts.keenwrite.com/download/libre-baskerville.zip" ./
ADD "https://fonts.keenwrite.com/download/niconne.zip" ./
ADD "https://fonts.keenwrite.com/download/nunito.zip" ./
ADD "https://fonts.keenwrite.com/download/open-sans-emoji.zip" ./
ADD "https://fonts.keenwrite.com/download/pt-mono.zip" ./
ADD "https://fonts.keenwrite.com/download/pt-sans.zip" ./
ADD "https://fonts.keenwrite.com/download/pt-serif.zip" ./
ADD "https://fonts.keenwrite.com/download/roboto.zip" ./
ADD "https://fonts.keenwrite.com/download/roboto-mono.zip" ./
ADD "https://fonts.keenwrite.com/download/source-serif-4.zip" ./
ADD "https://fonts.keenwrite.com/download/underwood.zip" ./

# Typesetting software
ADD "http://lmtx.pragma-ade.nl/install-lmtx/context-linuxmusl.zip" "context.zip"

# ########################################################################
#
# Install components, modules, configure system, remove unnecessary files
#
# ########################################################################
WORKDIR $CONTEXT_HOME

RUN \
  apk add -t py3-cssselect && \
  apk add -t py3-lxml && \
  apk add -t py3-numpy && \
  apk --update --no-cache \
    add ca-certificates curl fontconfig inkscape rsync && \
  mkdir -p \
    "$FONTS_DIR" \
    "$INSTALL_DIR" \
    "$TARGET_DIR" \
    "$SOURCE_DIR" \
    "$THEMES_DIR" \
    "$IMAGES_DIR" \
    "$CACHES_DIR" && \
  echo "export CONTEXT_HOME=\"$CONTEXT_HOME\"" >> $PROFILE && \
  echo "export PATH=\"\$PATH:\$CONTEXT_HOME/tex/texmf-linuxmusl/bin\"" >> $PROFILE && \
  echo "export OSFONTDIR=\"/usr/share/fonts//\"" >> $PROFILE && \
  echo "PS1='\\u@typesetter:\\w\\$ '" >> $PROFILE && \
  unzip -d $CONTEXT_HOME $DOWNLOAD_DIR/context.zip && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/andada-pro.zip "*.otf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/archivo-narrow.zip "*.otf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/carlito.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/courier-prime.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/libre-baskerville.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/inconsolata.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/niconne.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/nunito.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/open-sans-emoji.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/pt-mono.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/pt-sans.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/pt-serif.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/roboto.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/roboto-mono.zip "*.ttf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/source-serif-4.zip "*.otf" && \
  unzip -j -o -d $FONTS_DIR $DOWNLOAD_DIR/underwood.zip "*.ttf" && \
  fc-cache -f -v && \
  mkdir -p tex && \
  sh install.sh && \
  rm -rf \
    "modules" \
    "/var/cache" \
    "/usr/share/icons" \
    "/opt/context/tex/texmf-context/source" \
    $DOWNLOAD_DIR/*.zip \
    $CONTEXT_HOME/tex/texmf-modules/doc \
    $CONTEXT_HOME/tex/texmf-context/doc && \
  mkdir -p $CONTEXT_HOME/tex/texmf-fonts/tex/context/user && \
  ln -s $CONTEXT_HOME/tex/texmf-fonts/tex/context/user $HOME/fonts && \
  source $PROFILE && \
  mtxrun --generate && \
  find \
    /usr/share/inkscape \
    -type f -not -iname \*.xml -exec rm {} \; && \
  find \
    $CONTEXT_HOME \
    -type f \
      \( -iname \*.pdf -o -iname \*.txt -o -iname \*.log \) \
    -exec rm {} \;

# ########################################################################
#
# Ensure login goes to the target directory. ConTeXt prefers to export to
# the current working directory.
#
# ########################################################################
WORKDIR $TARGET_DIR