.gitignore was ignoring these files, causing them to be missing on fresh checkout (e.g. after git pull on server), which broke the Docker build. Removed the ignore entries so the files are tracked by git.