Coder Social home page Coder Social logo

blue-green-deployment's Introduction

Blue-Green-Deployment Docker

-- BlueGreen 배포를 Docker를 이용한 예제입니다.

0.2

dynamic proxy 적용이 안된 버전입니다. 때문에 무중단 배포는 아직 구현되지 않았지만, 버전 교체 자동화는 적용됐습니다.

Docker remote api 설정 (참고)


// linux
$sudo service docker stop // docker service 중지
$sudo docker -d -H tcp://0.0.0.0:4243 // docker tcp 설정

// docker for mac
$socat -d TCP-LISTEN:4243,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock

docker-compose.blue.yml


version: "2"
services:
  nginx:
    build: nginx/.
    image: nginx:0.2
    ports:
     - "80:80"
    depends_on:
     - app
  app:
    build: app1/.
    image: app1:0.2

docker-compose.green.yml


version: "2"
services:
  nginx:
    build: nginx/.
    image: nginx:0.2
    ports:
     - "80:80"
    depends_on:
     - app
  app:
    build: app2/.
    image: app2:0.2

deploy.sh


#!/usr/bin/env bash

DEPLOY_URL=tcp://127.0.0.1:4243;
DOCKER_APP_NAME=app;

EXIST_BLUE=$(DOCKER_HOST=${DEPLOY_URL} docker-compose -p ${DOCKER_APP_NAME}-blue -f docker-compose.blue.yml ps | grep Up);

#DOCKER_HOST=tcp://127.0.0.1:4243 docker-compose -p app-blue -f docker-compose.blue.yml up --build -d;

if [ -z "$EXIST_BLUE" ]; then
    echo ">>>>>>>>>>>> EXIST BLUE...";
    DOCKER_HOST=${DEPLOY_URL} docker-compose -p ${DOCKER_APP_NAME}-green -f docker-compose.green.yml down;
    DOCKER_HOST=${DEPLOY_URL} docker-compose -p ${DOCKER_APP_NAME}-blue -f docker-compose.blue.yml up -d;
else
    echo ">>>>>>>>>>>> EXIST GREEN...";
    DOCKER_HOST=${DEPLOY_URL} docker-compose -p ${DOCKER_APP_NAME}-blue -f docker-compose.blue.yml down;
    DOCKER_HOST=${DEPLOY_URL} docker-compose -p ${DOCKER_APP_NAME}-green -f docker-compose.green.yml up -d;
fi

0.1

--

nginx upstream을 이용해 app1, app2를 proxy 설정.

docker-compose.yml


version: "2"
services:
  nginx:
    build: nginx/.
    image: nginx:0.1
    ports:
     - "80:80"
    links:
     - app1
     - app2
  app1:
    build: app1/.
    image: app1:0.1
    ports:
     - "8888:8888"
  app2:
    build: app2/.
    image: app2:0.1
    ports:
      - "8889:8889"

실행 : docker-compose up

blue-green-deployment's People

Contributors

woniper avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.