본문 바로가기
공부 기록

[Docker] 도커 빌드 및 실행 자동화 스크립트

by 타태 2021. 12. 2.

 

 

2021.10.10 - [실전 공부/AWS&Docker&Linux] - [SERVER] 리눅스 + 도커 기반 서버 관리 시 정말 자주 사용하는 명령어 모음

 

[SERVER] 리눅스 + 도커 기반 서버 관리 시 정말 자주 사용하는 명령어 모음

2021.09.26 - [실전 공부] - [JAVA] Builder Pattern ( 빌더 패턴 )_사용 예제 ( Lombok + 일반) [JAVA] Builder Pattern ( 빌더 패턴 )_사용 예제 ( Lombok + 일반) 2021.08.01 - [실전 공부] - 모나코 에디터(..

ktae23.tistory.com

 

클린, 빌드, 패키징, 도커 빌드, 실행 자동화 스크립트

#!/bin/bash
VAR=`sudo docker ps -a -q  --filter name="back"` \ 
&& sudo mvn clean -DskipTests package \
&& sudo docker build -t back .
read -p "Do you want restart the container now? (y/n) " RESP
if [ "$RESP" = "y" ]; then
sudo docker rm -f $VAR \
&& sudo {도커 실행 스크립트}
else
  echo "Finish"
fi

* 참고 : 스크립트에서 역슬래시(\)는 아래 줄로 이어쓰기의 개념입니다.

          직접 명령어를 입력하고자 한다면 역슬래시를 지우고 한줄로 연결하여 실행해야 합니다.

 

 

상세 설명

1. 현재 실행중인 컨테이너의 ID를 찾아 VAR 변수에 저장

    - 백틱 사이에 들어간 스크립트의 결과가 저장 된다.

# 현재 이름이 back으로 실행중인 컨테이너 찾기
VAR=`sudo docker ps -a -q  --filter name="back"`

 

2. 메이븐 클린과 테스트 없이 패키지 생성을 동시에 수행

    - && 연산자를 사용해 앞의 실행이 성공적으로 수행 되었을때만 다음 스크립트가 실행 되도록 한다.

 

# 메이븐 클린 + 테스트 없이 패키지
&& sudo mvn clean -DskipTests package

 

3. "back"을 태그로 설정한 도커 이미지를 빌드

    - && 연산자를 사용해 앞의 실행이 성공적으로 수행 되었을때만 다음 스크립트가 실행 되도록 한다.

# 태그를 back으로 달아서 빌드 
&& sudo docker build -t back .

 

4. 사용자에게 입력을 받는다.

    - y 또는 n

# 입력값을 받음 
read -p "Do you want restart the container now? (y/n) " RESP

 

5. 입력값이 y이면 then 구절 실행, 아닐 경우 else 구절 실행 후 fi 구절에서 종료

    - 입력값이 y일 때 VAR 변수에 담아두었던 container Id를 이용해 현재 실행중인 back 컨테이너 종료.

    - && 연산자를 이용해 컨테이너 종료가 정상 완료 되었을 때 새롭게 빌드 된 도커를 실행(도커 실행 스크립트)

 

# 입력값이 y 이면 then 이하 명령어 실행
if [ "$RESP" = "y" ]; then
# 현재 실행중인 back 컨테이너 종료 및 삭제 && 새로 빌드한 도커 실행
sudo docker rm -f $VAR 
&& sudo 도커 실행 스크립트 # (태그 설정, 포트, 볼륨 잡기 등등)
else
# 입력값이 n이면 종료
  echo "Finish"
fi


이러한 스크립트 작성을 통해 메이븐 빌드부터 도커 빌드까지 한번에 수행 할 수 있다.

또한 미리 실행 시켜둔 뒤 빌드가 끝나면 사용자의 응답에 따라 전환 대기를 하기 때문에 컨테이너 교체에 문제가 없을 때까지 대기시킨 뒤 전환 할 수 있다는 이점이 있다.




반응형

댓글