![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkXylprTsyaojP-MLG3QY3ax8Htzm7lQux-SSrXUzI5eeLff5f3g-DyqgvySY_mTO2wpT1Ltohzv4OueJaB3yBtmNU2s42eodY5LOj5q0V4e7kQiQJwtBfYu7gBNAFS2QCdL8UTQTCcwo/s640/docker-compose.png)
Imagine you have your Microservices A-E managed by Teams 1-3 like shown below:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaRyXJcROCyZ7RfHovWlv_G78th1USgZgiEk8lASu48i4iYNT1uV92Tqj6dK-PXg7DADcYitNCn5ytFyCVqMuiuv19jcES1IOjKLPxTi4lVdqhiGSCWdFOl-BZBGyouVV-PCZjOeBMz3k/s400/microservices.png)
Now when you have each of your services containerized with docker and you use docker-compose to deploy the entire set of services as one logical unit as your application. One of the core-points of a microservice is loosely-coupled services that are independently deploy-able.
And when you as a newbie with these tools wonder how do you deploy a service with new code changes, you should understand that this involves two steps:
- Update the container-image with a newer one. Your build tool (maven/gradle in Java/JEE world) will do this for you.
- Update the container services to reflect the newer/updated image. This is done with docker-compose like below:
$ docker-compose -f docker-compose.yml up yourService
You pass the docker-compose file with -f option and say whether you want to up/down a specific service. The up command automatically checks for updated image and rolls out the changes for you. Bingo!