Talk about the need for containerization and the tenets of micro-services architecture. Containerize an application consisting of three services and build/run it using docker-compose. Explain Dockerfile, docker-compose file and what happens behind the scenes in detail.