Installing ConTeXt LMTX into a Docker container
1) Install Docker
Install Docker for your system by following the instructions at Docker.com.
2) Build the Docker container
Building a container is a two-step process: first create a Dockerfile that specifies what needs to be built, then build it.
A Dockerfile is a plain text file called Dockerfile
without any filetype extension. Copy the following into your Dockerfile:
# ConTeXt LMTX in a container FROM debian:latest WORKDIR /opt/context # The official Debian image provided by Docker does not include a program that can # uncompress .zip files, so we have to install one. RUN apt-get -y update \ && apt-get -y autoremove \ && apt-get clean \ && apt-get install -y unzip \ && rm -rf /var/lib/apt/lists/* # Use the 64 bit Linux version ADD https://lmtx.pragma-ade.com/install-lmtx/context-linux-64.zip context-linux-64.zip RUN unzip context-linux-64.zip \ && rm installation.pdf context-linux-64.zip # Run the ConTeXt installer RUN chmod 755 install.sh \ && (./install.sh > install.log 2>&1) # Switch to a working directory WORKDIR /home/context ENV PATH=/opt/context/tex/texmf-linux-64/bin:$PATH
and then run these commands:
$ cd <the directory containing Dockerfile> $ docker build -t context .
(Note the full stop at the end.)
3) Check that ConTeXt built correctly (optional)
You can run a bash
shell within the container to check that ConTeXt built correctly.
$ cd <the directory containing Dockerfile> $ docker run -it context bash
First, check that ConTeXt runs:
# context --version
which should give something like:
root@f96c7ca62c48:/home/context# context --version mtx-context | ConTeXt Process Management 1.06 mtx-context | mtx-context | main context file: /opt/context/tex/texmf-context/tex/context/base/mkiv/context.mkiv mtx-context | current version: 2024.08.16 16:30 mtx-context | main context file: /opt/context/tex/texmf-context/tex/context/base/mkxl/context.mkxl mtx-context | current version: 2024.08.16 16:30
If not then check the build log for errors:
# more /opt/context/install.log
Type exit
to end.
4) Compile your ConTeXt document
This is very similar to the check in step 3 but with a "bind mount" added so that Docker can access your source files.
$ cd <the directory containing your ConTeXt source(s)>
Create a file hello.tex
containing the lines:
\starttext Hello, this is \CONTEXT\ running in Docker \stoptext
and then generate a PDF from it using:
$ docker run -itv .:/home/context context bash # context hello.tex
If it all works correctly you should have a hello.pdf
file in your source(s) directory.
Notes
- Fonts – Only the fonts supplied with ConTeXt will be available. Fonts installed on the host PC, i.e. the PC on which Docker is running, will not be available. Any required additional fonts need to be added into Debian as part of the Dockerfile build script.