Разделение приложения на отдельные контейнеры требует четко определенного API, поддерживающего вызовы по сети (обычно HTTP или другой протокол приложения в стеке TCP).
Поскольку и ghostscripts, и pdftk являются инструментами командной строки, вызываемыми используя CLI, вы не можете вызывать их из другого контейнера из коробки, для этого вам нужно будет разработать какой-нибудь внешний интерфейс API.
При настройке границ ваших контейнеров думайте с точки зрения доменов. Контейнер становится наименьшей единицей, которую вы будете развертывать и масштабировать. Эта единица должна быть автономной и иметь четко определенную единственную цель.
Из вашего описания неясно, какую роль играет nginx, но предполагается, что это своего рода клиент, обращенный к веб-серверу или прокси-серверу 3 контейнеры имеет смысл в вашем случае
- NodeJs + PDFTK + Ghostscripts (Приложение)
- Nginx (веб-сервер / прокси)
- MySQL (База данных)
Приложение NodeJS имеет все свои зависимости внутри приложения, но более свободно связано с Nginx и MySQL, с которыми оно может связываться по сети.