Building Application Stacks - Defining and Running Multi Container Apps
Lab: Creating a Docker Compose Stack for the Vote Application
Lets first launch redis and vote independently and see if they automatically connect.
docker container run -idt --name redis redis:alpine docker container run -idt --name vote -P schoolofdevops/vote
Try registering a vote with the voteapp UI. Does it work?
You could also try if vote is able to discover redis by running
docker exec vote ping redis
Remove vote container created above if any, and re launch it with the link.
docker container rm -f vote docker container run -idt --name vote --link redis:redis -P schoolofdevops/vote
Launch worker app as well with the link
docker container run -idt --name worker --link redis:redis -P schoolofdevops/vote-worker docker logs worker
Launching inter linked services with Compose spec
Lets now create a docker-compose spec and launch the services with docker-compose utility.
Create a directory to keep the compose files. Lets say stack
mkdir stack cd stack
vote: image: schoolofdevops/vote links: - redis:redis ports: - 80 redis: image: redis:alpine worker: image: schoolofdevops/vote-worker links: - redis:redis
Now launch it with
docker-compose up -d docker-compose ps
version: "3" networks: vote: driver: bridge services: vote: image: schoolofdevops/vote ports: - 80 networks: - vote depends_on: - redis redis: image: redis:alpine networks: - vote worker: image: schoolofdevops/vote-worker networks: - vote depends_on: - redis
Launch the new stack with,
docker-compose -f docker-compose-v3.yml up -d docker-compose -f docker-compose-v3.yml ps docker-compose -f docker-compose-v3.yml down