Deploy to dev with Docker Compose
Here is what you are going to learn in this chapter,
- You would begin by learning how docker compose could help launch a monitoring stack.
- understand the docker compose spec version 1
- Keep adding services to docker compose
- Refactor the compose file with version3 syntax
- Create a consolidated jenkins pipeline
- and start deploying to a integrated dev environment with docker compose
Creating docker compose spec
cd example-voting-app
file: docker-compose.yaml
vote:
build: ./vote
command: python app.py
links:
- redis:redis
ports:
- 80
redis:
image: redis:alpine
worker:
build: ./worker
dockerfile: Dockerfile
links:
- redis:redis
docker-compose config
docker-compose build
docker-compose build ( observe caching )
docker-compose up -d
docker-compose ps
Additional Commands
docker-compose images
docker-compose logs
docker-compose logs worker
docker-compose pull
docker-compose exec vote ps
docker-compose stop
docker-compose down
Refactoring docker compose with v3 spec
file: docker-compose.yaml
Replace xxxx with your docker hub id.
version: "3.7"
volumes:
db-data:
networks:
instavote:
driver: bridge
services:
vote:
image: schoolofdevops/vote:latest
ports:
- 5000:80
depends_on:
- redis
networks:
- instavote
redis:
image: redis:alpine
networks:
- instavote
db:
image: postgres:9.4
volumes:
- "db-data:/var/lib/postgresql/data"
networks:
- instavote
result:
image: schoolofdevops/vote-result:latest
ports:
- 5001:4000
depends_on:
- db
networks:
- instavote
worker:
image: xxxx/worker:latest
depends_on:
- redis
- db
networks:
- instavote
Adding deploy to dev with docker compose
Add a deploy to dev stage to Jenkinsfile
stage('deploy to dev'){
agent any
when{
branch 'master'
}
steps{
echo 'Deploy instavote app with docker compose'
sh 'docker-compose up -d'
}
}