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'
          }
      }