Git itself has a server-side post-receive hook. You can use it to run a command that triggers your deployment whenever you push to your repo. Web services like Gitlab or Bitbucket rely on this mechanism to offer plug-ins that trigger CI services. Less flexible but you can configure it conveniently from the web front end.
Another option would be to use a ...
Depens on how you hosting your application in production
If non docker: use capistrano or other symlink deployment tool
If docker: use docker swarm deploy to update your containers
Then you need just add .gitlab-ci.yml file to your project directory and write some deployment scripts.