Как обновить приложение при обнове исходников?
Собираешь новый образ с новым тэгом
Повторить процесс удалив контейнер?
Да
Примерно так
docker stop my-container
docker rm my-container
docker run --name=my-container my-image:new-tag
Какие подводные по настройке безопасности?
root-less контейнеры
маунтить отдельные файлы и по возможности ro
порты не привилегированные использовать
вообще, докер это не про безопасность, а про скорость
Стоит ли держать бд на одном vps с api или поднять еще один.
Если инстанс контейнера один, то лучше на одном - локальность данных
Если горизонтально масштабируешься + отказоустойчивость повысить хочешь, то лучше раздельные