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

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

728x90

반응형

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

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

#!/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

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

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

728x90

상세 설명

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

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

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

728x90

반응형

from http://ktae23.tistory.com/207 by ccl(S) rewrite - 2021-12-03 05:28:22