Как реализовать gitlab ci использую docker-compose?
Если кратко то как то так. 

1. Образы БД брать из офф репозитория, подкидывать только файлы конфигурации если требуются через docker-compose. 
2. Образ приложения собирать либо на шаред раннерах, либо на своём раннере. 
3. Собранный образ пушить в репозиторий гитлаба. 
4. На сервере куда деплоить поставить гитлаб раннер, привязать к нему тэг. 
5. В докер композ указать в качестве имаджа репозиторий гитлаба/имяобраза:тэг
6. В gitlab ci добавить 2 стейджа. 1 это сборка и пуш докер образов, 2 это выполнение на установленном раннере docker-compose up -d
как пример, можешь здесь что-то взять.
https://github.com/MindPhaser34/my-portfolio/tree/...