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
'DevOps' 카테고리의 다른 글
Jenkins와 AWS ECR을 사용한 Docker 배포 [1] - AWS ECR Private Repository 생성 및 설정 (0) | 2021.07.11 |
---|---|
<none> 태그 이미지 일괄 삭제 (0) | 2021.07.09 |
[Docker] Crontab 설치 (0) | 2020.09.03 |
[docker-compose] 커맨드 (0) | 2020.08.16 |
[docker-compose] SpringBoot Application 배포 스크립트(docker-compose 버전) 와탭(Whatap)설정 추가 (0) | 2020.05.03 |
댓글