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

댓글

💲 추천 글