Dokku's main advantage is that it's a no-brainer : if you're used to deploying heroku apps, it's very similar. It also automates the creation of data containers for database services, for example. On top of that, while I can use heroku's buildpacks for small sideprojects, I can also take full control of the build using a Dockerfile (which is what I do for bigger projects). The main inconvenient is that it can't manage multi host container deployments, like docker-swarm or kubernetes (I don't need it, so no need to compromise on simplicity).
Gitlab's pipeline both offer CI and CD, with a lot of cool features around it, like being able to tell on a commit page when it has been deployed on production, for no configuration cost.
Regarding costs : well, it's the cost of a dedicated server.