Docker решает проблемы с окружением и зависимостями, не будет такого, что вы выкатили код, а он на сервере не запускается, потому что там другая версия библиотеки или прав где-то не хватает. Предсказуемость, в общем. С пакетами этой предсказуемости несколько меньше, хотя там можно указать зависимости. С деплоем по ssh - её вообще не будет, можно только надеяться, что всё сработает, а если не сработает - то идти на сервак и разбираться. В таком сценарии смысл в автодеплое исчезает, можно просто баш скрипт написать, положить рядом с кодом и запускать руками. Всё равно вам придётся контролировать, что всё успешно прошло