I am using docker-compose in development environment with a docker-compose.yml
file where I list all the containers I need.
Also I have a centralized git repo, Jenkins server and a another server where I am going to keep both staging and production.
So the question is how to better organize the deployment process.
Now git push
on the git server side triggers a Jenkins build job. Depending on the branch name (staging or production) different jobs will be triggered.
A build job uses the docker-compose for bringing up the whole environment and running tests. How do I push new containers to the staging/production environment then?
One way is to push them to the private or a public docker registry, but what is the best practice of updating containers in production? Should the Jenkins server just ssh and run raw kill
, rm
, pull
and run
commands? I do not see examples around.