DevOps

[docker-compose] Shutdown 스크립트(docker-compose)

nineDeveloper 2020. 10. 22.

목차

    728x90

    auto_apply.sh 스크립트를 수행하여 docker-compose 로 구동시킨 어플리케이션을 종료시키는 스크립트

    ## SERVICE 명(jar 파일 이름 앞자리와 동일해야함, docker-compose '서비스명-profile'과 같아야함)
    ## Docker 컨테이명이기도 하므로 FULL NAME으로 작성
    SERVICE_NAME="service"
    
    ## Spring Profile(dev, stage, prod)
    export SPRING_PROFILE="dev"
    
    ## 외부에 제공되는 포트 (Docker 컨테이너 장점으로 HOST 포트만 변경하여 다른 포트로 제공할 수 있다)
    export HOST_PORT=9001
    ## Docker Container 포트 (컨테이너 포트는 9001 Application 의 포트이다)
    export CONTAINER_PORT=9001
    
    ## Tag 버전명
    export VERSION="lts"
    
    ## IMAGE 명
    export IMAGE_NAME="${SERVICE_NAME}-${SPRING_PROFILE}"
    
    echo "---------------------"
    echo "1. docker-compose down"
    ## 컨테이너ID 조회
    CONTAINER_ID=`docker ps -af ancestor=${IMAGE_NAME}:${VERSION} --format "{{.ID}}"`
    echo "CONTAINER_ID=${CONTAINER_ID}"
    CONTAINER_NAME_ID=`docker ps --filter "name=${IMAGE_NAME}" --format "{{.ID}}"`
    echo "CONTAINER_NAME_ID=${CONTAINER_NAME_ID}"
    ## 컨테이너ID 가 있으면 docker-compose down 으로 컨테이너를 중지 및 제거한다
    if [ ${CONTAINER_ID} ];then
      ## 동일한 컨테이너 명이 있으면 해당 docker-compose 로 해당 서비스만 제거한다
      ## -f, --force Don't ask to confirm removal
      ## -s, --stop Stop the containers, if required, before removing
      ## -v Remove any anonymous volumes attached to containers
      echo "docker-compose rm -fsv ${IMAGE_NAME}"
      docker-compose rm -fsv ${IMAGE_NAME}
    elif [ ${CONTAINER_NAME_ID} ];then
      echo "docker rm ${CONTAINER_NAME_ID}"
      docker rm ${CONTAINER_NAME_ID} -f
    else
      echo "CONTAINER is Empty pass..."
    fi
    
    CONTAINER_ID=`docker ps -af ancestor=${IMAGE_NAME}:${VERSION} --format "{{.ID}}"`
    echo "CONTAINER_ID=${CONTAINER_ID}"
    ## 컨테이너ID 를 다시 확인해서 아직 있으면 컨테이너와 이미지를 강제 삭제한다
    if [ ${CONTAINER_ID} ];then
      echo "docker rm ${CONTAINER_ID}"
      docker rm ${CONTAINER_ID} -f
      ## 이미지ID 조회
      IMAGE_ID=`docker images -f=reference=${IMAGE_NAME}':*' --format "{{.ID}}"`
      echo "IMAGE_ID=$IMAGE_ID"
      ## 이미지ID 가 있으면 이미지도 제거한다(docker-compose up --build 로 이미지 rebuild)
      if [ $IMAGE_ID ];then
        echo "docker rmi -f $IMAGE_ID"
        docker rmi -f $IMAGE_ID
      fi
    fi
    echo "======= Shutdown Complete =======" 
    728x90

    댓글