Для начала надо понять, что чтобы БД не пропала - ее нужно сохранить вне контейнера. Т.к. контейнер эфемерен, и его ФС может исчезнуть при удалении контейнера. Есть два способа для этого: volume и bind mount. Первый сохраняет данные в именованном или неименованном volume в каталоге /var/lib/docker/volumes и есть риск, что его случайно удалите (например, при docker-compose down -v ). Второй способ позволяет хранить данные вовне контейнера в файловой системе хост машины. Это более надёжно.