Dockerfile for Doom Book

image credits

Doom is a 1993 first-person shooter developed by id Software for MS-DOS. Players assume the role of a space marine, popularly known as “Doomguy” … – Wikipedia: Doom

@sylefeb tweeted about his Doom on FPGA project and mentioned the Game Engine Black Book: Doom from Fabien Sanglard, who provided the LateX source code of the book.

You can download the PDF (and give a gift 🎁) or buy the book. But why not generate the PDF yourself? However, I didn’t want to install the necessary software directly and therefore I wrote a Dockerfile:

FROM ubuntu:18.04

ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
    inkscape texlive texlive-font-utils texlive-latex-extra \
    && rm -rf /var/lib/apt/lists/*

RUN mkdir /build
VOLUME [ "/build" ]
WORKDIR /build

CMD ./

These are the things the Dockerfile do:

  • Use Ubuntu 18.04 (see tkz-obj-angles.tex).
  • A package wants to interact with me, but I don’t want to, so I added the ARG command.
  • Install all necessary packages.
  • Create a build directory to mount a volume.
  • Run to generate the PDF.

This is how the Docker image is built:

docker build -t choas/gebb .

To generate the book go to the root path of the documents and run the Docker image. You need to mount the actual path ($PWD):

docker run --volume $PWD:/build choas/gebb

This take some time and you will find the book in the output folder of the current path. The docker image works not only for Doom, but also generates the Game Engine Black Book: Wolfenstein 3D book.


First I used Ubuntu 20.04, but this version installs newer latex packages. This resulted in an error that complained about tkz-obj-angles.tex. One of these packages is tkz-euclide and since version 3.02 \usetkzobj{all} is no longer necessary. See also LaTeX can’t find file ‘tkz-obj-angles.tex’.


With this Dockerfile you can generate the Doom and Wolfenstein 3D books. In case you don’t want to build it yourself, I have pushed the image to docker hub: choas/gebb

I have also created a pull request and an issue about tkz-obj-angles.tex.