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?
Linking services
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
file: docker-compose.yml
vote:
image: schoolofdevops/vote
links:
- redis:redis
ports:
- 80
redis:
image: redis:alpine
worker:
image: schoolofdevops/vote-worker
links:
- redis:redis
Syntax check
docker-compose config
Now launch it with
docker-compose up -d
docker-compose ps
file: docker-compose-v3.yml
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