[CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ฃ NGINX Server Docker Job (โ‘ข NGINX Docker Run & Health Check)

2023. 7. 6. 20:01ใ†System ์ž‘์—…์‹ค/DevOps

728x90
๋ฐ˜์‘ํ˜•

 




 

 

๐Ÿ—‚ ๋ชฉ์ฐจ

โš ๏ธ ์•„๋ž˜ ๋ชฉ์ฐจ ์ค‘ ๋ช‡๋ช‡๊ฐœ์˜ ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ๋ฌธ์ œ๋กœ ๊ธ€ ๋งจ ํ•˜๋‹จ์— ๋‹ค์Œ ๊ธ€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

โœ… [CI/CD] Jenkins์™€ Gitea ์—ฐ๋™
โœ… [CI/CD] Jenkins Trigger ์ •๋ณด Discord๋กœ ๋ณด๋‚ด๊ธฐ
โœ… [CI/CD] ์ •์  ์ฝ”๋“œ ๋ถ„์„ ํˆด SonarQube์™€ Jenkins ์—ฐ๋™
โœ… [CI/CD] SonarQube๋ฅผ ํ†ตํ•ด Code Convention ์ ์šฉ
โœ… [DevOps] JAVA Gradle JaCoCo (Code coverage) ์„ค์ •ํ•˜๊ธฐ 
โœ… [DevOps] JAVA Gradle JaCoCo (Code coverage) ์„ค์ •ํ•˜๊ธฐ (์ถ”๊ฐ€)(https://junyharang.tistory.com/392)

โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘  Application Linuxt(Ubuntu)์— SSH๋ฅผ ์ด์šฉํ•œ ํŒŒ์ผ ์ „์†ก
โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ก Create Docker Image And BackUp
โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ข Application Server Docker Job (โ‘  Application ๋„์ปค ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ)
โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ข Application Server Docker Job (โ‘ก Application Docker Run)(https://junyharang.tistory.com/406)
โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ข Application Server Docker Job (โ‘ข Application Docker Health Check)
โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ฃ NGINX Server Docker Job (โ‘  NGINX ๊ฐ ์ข… ์„ค์ •) 
โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ฃ NGINX Server Docker Job (โ‘ก NGINX Docker ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ) 
โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ฃ NGINX Server Docker Job (โ‘ข NGINX Docker Run & Health Check)
โœ… [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ฃ NGINX Server Docker Job (โ‘ข NGINX ์žฌ ์„ค์ •)



๐Ÿค” ๋‚ด๊ฐ€ ๋งŒ๋‚œ ๋ฌธ์ œ

โ›”๏ธ [Jenkins] java.lang.OutOfMemoryError: Java heap space

 



 

 

๋ฐฐํฌ ์ž๋™ํ™”์™€ ์ง€์†์  ์ธ๋„:๋„์ปค์™€ ์  ํ‚จ์Šค ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋กœ ๋งŒ๋“œ๋Š”

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

๐Ÿš€ NGINX Docker Run

    ๐Ÿ”ฝ ๊ฐœ์š”

        ๐Ÿ“ฆ ๊ตฌ์„ฑ๋„

CI/CD ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๊ตฌ์„ฑ๋„

 

 

 

deploy Directory Path

 

 

 

 

 

        ๐Ÿ“ฆ ์†Œ๊ฐœ

์ง€๋‚œ ๊ธ€์—์„œ NGINX Docker ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ–ˆ๊ณ , ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” NGINX Docker Container ๊ธฐ๋™ ๋ฐ Health Check ์ž‘์—… ํ•ด๋ณด๋„๋ก ํ• ๊ฒŒ์š”.

 

 

 

 

    ๐Ÿ”ฝ nginxContainerRun.sh

#!/bin/bash

set -e

NOW=$(date +"%y-%m-%d_%H:%M:%S")
SAVE_LOG_DATE=$(date +"%y-%m-%d")

echo "====================================================================================================="
echo "[$NOW] [INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์„œ๋ฒ„ ์ž‘์—… ์ค‘ Nginx Docker Container ๊ธฐ๋™ ์ž‘์—…์ด ์‹œ์ž‘ ๋˜์—ˆ์–ด์š”."
echo "======================================[$NOW] ํ†ตํ•ฉ ๋ฐฑ ์˜คํ”ผ์Šค api  Nginx Docker Container ๊ธฐ๋™ ์ž‘์—…======================================"
echo "[$NOW] [INFO] Author(๋งŒ๋“ ์ด): ์ฃผ๋‹ˆ(junyharang8592@gmail.com)"

NGINX_CONTAINER_NAME="nginx-total-back-office"

NGINX_EXTERNAL_PORT=1000

NGINX_SHELL_SCRIPT_DIRECTORY="/data/deploy/giggal-total-back-office/deploy/prod/nginx/shell-script"


checkLogDirectory() {
  sleep 5

  LOG_DIR="/var/log/deploy/giggal-total-back-office"

  if [ -d "$LOG_DIR" ];
  then
    echo "=====================================================================================================" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์„œ๋ฒ„ ์ž‘์—… ์ค‘ Application Docker Container ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ ์ž‘์—…์ด ์‹œ์ž‘ ๋˜์—ˆ์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "======================================[$NOW] ํ†ตํ•ฉ ๋ฐฑ ์˜คํ”ผ์Šค api Application Docker Container ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ======================================" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [INFO] Author(๋งŒ๋“ ์ด): ์ฃผ๋‹ˆ(junyharang8592@gmail.com)" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [INFO] LOG Directory ์กด์žฌ ํ•ฉ๋‹ˆ๋‹ค."
    echo "[$NOW] [INFO] LOG Directory ์กด์žฌ ํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

  else
      echo "[$NOW] [INFO] cicd-admin์€ mkdir ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์š”. ๊ด€๋ฆฌ์ž ํ˜น์€ DMSO ํฌ๋ฃจ์—๊ฒŒ ${LOG_DIR} ์ƒ์„ฑ์„ ์š”์ฒญํ•ด ์ฃผ์„ธ์š”. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
      exit 1
  fi

  nginxDockerContainerRun
}

nginxDockerContainerRun() {
  echo "[$NOW] [INFO] Nginx Container ๊ธฐ๋™ ํ• ๊ฒŒ์š”."
  echo "[$NOW] [INFO] Nginx Container ๊ธฐ๋™ ํ• ๊ฒŒ์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

  dockerRunCommand=$(docker run -itd \
                    --name $NGINX_CONTAINER_NAME \
                    --hostname $NGINX_CONTAINER_NAME \
                    -e container=docker \
                    -p $NGINX_EXTERNAL_PORT:80 \
                    --restart unless-stopped \
                    nginx:latest)

  command="docker run -itd --name $NGINX_CONTAINER_NAME --hostname $NGINX_CONTAINER_NAME -e container=docker -p $NGINX_EXTERNAL_PORT:80 --restart unless-stopped nginx:latest"

  if [ -z "$dockerRunCommand" ];
  then
    failedCommand "${command}"
  else
    successCommand "${command}"

    checkNginxStatus
  fi
}

checkNginxStatus() {
  echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ๊ธฐ๋™ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ• ๊ฒŒ์š”."
  echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ๊ธฐ๋™ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ• ๊ฒŒ์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

  containerId=$(docker ps --filter "name=$NGINX_CONTAINER_NAME" --format "{{.ID}}")
  checkContainerStatus=$(docker ps --filter "id=$containerId" --format "{{.Status}}")

  sleep 5

  containerLogs=$(docker logs "$containerId")

  echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ๊ธฐ๋™ ์—ฌ๋ถ€ ํ™•์ธ ๋Œ€์ƒ Container ID : ${containerId} "
  echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ๊ธฐ๋™ ์—ฌ๋ถ€ ํ™•์ธ ๋Œ€์ƒ Container ID : ${containerId} " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

  if [[ $checkContainerStatus != "Up"* ]];
  then
    echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} Container ๊ธฐ๋™ ์ค‘์ด์ง€ ์•Š์•„ ๊ธฐ๋™ ํ•ฉ๋‹ˆ๋‹ค."
    echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} Container ๊ธฐ๋™ ์ค‘์ด์ง€ ์•Š์•„ ๊ธฐ๋™ ํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [ERROR] ๋ฌธ์ œ ๋ฐœ์ƒํ•œ Container ๋‚ด๋ถ€ Log ์ •๋ณด : "
    echo "[$NOW] [ERROR] ๋ฌธ์ œ ๋ฐœ์ƒํ•œ Container ๋‚ด๋ถ€ Log ์ •๋ณด : " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [ERROR] $containerLogs"
    echo "[$NOW] [ERROR] $containerLogs" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    failedCommand "docker ps --filter "id=$containerId" --format "{{.Status}}" "

    nginxDockerContainerRun

  else
    echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} Container ๊ธฐ๋™ ์ค‘์ด์—์š”."
    echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} Container ๊ธฐ๋™ ์ค‘์ด์—์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [INFO] ๊ธฐ๋™ ์‹œํ‚จ Container ๋‚ด๋ถ€ Log ์ •๋ณด : "
    echo "[$NOW] [INFO] ๊ธฐ๋™ ์‹œํ‚จ Container ๋‚ด๋ถ€ Log ์ •๋ณด : " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [INFO] $containerLogs"
    echo "[$NOW] [INFO] $containerLogs" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

    $NGINX_SHELL_SCRIPT_DIRECTORY/nginxServiceSetting.sh;
  fi
}

failedCommand() {
  local command=$1

  echo "[$NOW] [ERROR] ${command} ๋ช…๋ น์–ด ์ž‘์—… ์‹คํŒจํ•˜์˜€์–ด์š”. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค."
  echo "[$NOW] [ERROR] ${command} ๋ช…๋ น์–ด ์ž‘์—… ์‹คํŒจํ•˜์˜€์–ด์š”. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
  exit 1
}

successCommand() {
  local command=$1

  echo "[$NOW] [INFO] ${command} ๋ช…๋ น์–ด ์ž‘์—… ์„ฑ๊ณตํ•˜์˜€์–ด์š”."
  echo "[$NOW] [INFO] ${command} ๋ช…๋ น์–ด ์ž‘์—… ์„ฑ๊ณตํ•˜์˜€์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
}

checkLogDirectory

operationDockerStatus=$(docker ps -a)

echo "[$NOW] [INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ž‘์—… ์ค‘ Nginx Docker Container ๊ธฐ๋™ ์ž‘์—…์ด ๋๋‚ฌ์–ด์š”."
echo "[$NOW] [INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ LOG ์œ„์น˜ : ${LOG_DIR}"
echo "[$NOW] [INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ž‘์—… ์ค‘ Nginx Docker Container ๊ธฐ๋™ ์ž‘์—…์ด ๋๋‚ฌ์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
echo "[$NOW] [INFO] ํ˜„์žฌ ์šด์˜ ์ค‘์ธ Docker Container ์ •๋ณด : "
echo "[$NOW] [INFO] ํ˜„์žฌ ์šด์˜ ์ค‘์ธ Docker Container ์ •๋ณด : " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
echo "[$NOW] [INFO] ${operationDockerStatus} "
echo "[$NOW] [INFO] ${operationDockerStatus} " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
echo -e "=====================================================================================================\n"
echo -e "=====================================================================================================\n" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

 

NGINX ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋™ ๊ด€๋ จ Shell Script๋Š” ์œ„์™€ ๊ฐ™์ด ์ค€๋น„ํ•˜์˜€์–ด์š”.

๊ธฐ๋™ ๊ด€๋ จํ•œ ์Šคํฌ๋ฆฝํŠธ์— ์ƒ์„ธ ๋‚ด์šฉ์€ ์ด ์ „ Application Docker ๊ธฐ๋™ Shell Script ๋‚ด์šฉ์—์„œ ์ƒ์„ธํžˆ ๋ถ„์„ํ•ด ๋ณด์•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š”.

 

[CI/CD] Jekins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ข Application Server Docker Job (โ‘ก Application Docker Run)

๐Ÿ—‚ ๋ชฉ์ฐจ โœ… [CI/CD] Jenkins์™€ Gitea ์—ฐ๋™ โœ… [CI/CD] Jenkins Trigger ์ •๋ณด Discord๋กœ ๋ณด๋‚ด๊ธฐ โœ… [CI/CD] ์ •์  ์ฝ”๋“œ ๋ถ„์„ ํˆด SonarQube์™€ Jenkins ์—ฐ๋™ โœ… [CI/CD] SonarQube๋ฅผ ํ†ตํ•ด Code Convention ์ ์šฉ โœ… [DevOps] JAVA Gradle JaCoCo

junyharang.tistory.com

 

 

 

 

        ๐Ÿ“ฆ checkNginxStatus()

NGINX ๋„์ปค ๊ธฐ๋™ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„์ปค ๊ธฐ๋™ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์™€ ๋‹ค๋ฅธ ์ ์ด ํ•˜๋‚˜ ์žˆ์–ด์š”.

์ด ๊ณณ์—์„œ ๋งŒ๋“ค์—ˆ๋˜ NGINX ์„ค์ • ํŒŒ์ผ๋“ค์— ๋Œ€ํ•œ ์„ค์ • ํŒŒ์ผ์ด ์˜ฎ๊ฒจ ์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์—… ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด์—์š”.

 

[CI/CD] Jekins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ข NGINX Server Docker Job (โ‘  NGINX ๊ฐ ์ข… ์„ค์ •)

๐Ÿ—‚ ๋ชฉ์ฐจ โœ… [CI/CD] Jenkins์™€ Gitea ์—ฐ๋™ โœ… [CI/CD] Jenkins Trigger ์ •๋ณด Discord๋กœ ๋ณด๋‚ด๊ธฐ โœ… [CI/CD] ์ •์  ์ฝ”๋“œ ๋ถ„์„ ํˆด SonarQube์™€ Jenkins ์—ฐ๋™ โœ… [CI/CD] SonarQube๋ฅผ ํ†ตํ•ด Code Convention ์ ์šฉ โœ… [DevOps] JAVA Gradle JaCoCo

junyharang.tistory.com

 

nginxDockerContainerRun.sh 80 ~ 102๋ฒˆ์งธ ์ค„

728x90


์œ„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณด๋ฉด ์ตœ์ดˆ 80๋ฒˆ์งธ ์ค„์„ ํ†ตํ•ด ๊ธฐ๋™๋œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ ๊ธฐ๋™์ค‘์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์žˆ์–ด์š”.

๋งŒ์•ฝ ์ •์ƒ ๊ธฐ๋™์ค‘์ด์ง€ ์•Š๋‹ค๋ฉด nginxDockerContainerRun()์„ ํ˜ธ์ถœํ•˜์—ฌ ๋‹ค์‹œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ธฐ๋™ ๋  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ๊ณ , ๊ธฐ๋™ ์ค‘์ด๋ผ๋ฉด nginxServiceSetting.sh๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ํ•ด ์ฃผ์—ˆ๋Š”๋ฐ,
์ด ๋ถ€๋ถ„์ด ๋ฐ”๋กœ NGINX ์„ค์ • ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•ด ์ฃผ๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ์—์š”.


nginxDockerContainerRun.sh 121 ~ 131๋ฒˆ์งธ ์ค„


ํ•ด๋‹น ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ž‘๋™์ด ์™„๋ฃŒ๋˜๋ฉด ์ด ๊ณณ์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๊ณ , ํ˜„์žฌ ๊ธฐ๋™์ค‘์ธ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ๋“ฑ์„ ์ถœ๋ ฅ ๋ฐ ๋กœ๊ทธ์— ์ €์žฅํ•œ ๋’ค ํ•ด๋‹น ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœํ•œ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋Œ์•„๊ฐˆ ๊ฑฐ์—์š”.

 

 

 

 

    ๐Ÿ”ฝ nginxHealthCheck.sh

#!/bin/bash

set -e

NOW=$(date +"%y-%m-%d_%H:%M:%S")
SAVE_LOG_DATE=$(date +"%y-%m-%d")

echo "====================================================================================================="
echo "[$NOW] [INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์„œ๋ฒ„ ์ž‘์—… ์ค‘ Nginx Docker Container Health Check ์ž‘์—…์ด ์‹œ์ž‘ ๋˜์—ˆ์–ด์š”."
echo "======================================[$NOW] ํ†ตํ•ฉ ๋ฐฑ ์˜คํ”ผ์Šค api  Nginx Docker Container Health Check ์ž‘์—…======================================"
echo "[$NOW] [INFO] Author(๋งŒ๋“ ์ด): ์ฃผ๋‹ˆ(junyharang8592@gmail.com)"

NGINX_CONTAINER_NAME="nginx-total-back-office"

NGINX_EXTERNAL_PORT=1000

INTERNAL_SERVER_IP=192.168.30.3
EXTERNAL_SERVER_IP=211.109.XXX.XXX

NGINX_SHELL_SCRIPT_DIRECTORY="/data/deploy/giggal-total-back-office/deploy/prod/nginx/shell-script"

checkLogDirectory() {
  sleep 5

  LOG_DIR="/var/log/deploy/giggal-total-back-office"

  if [ -d "$LOG_DIR" ];
  then
    echo "=====================================================================================================" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์„œ๋ฒ„ ์ž‘์—… ์ค‘ Application Docker Container Health Check ์ž‘์—…์ด ์‹œ์ž‘ ๋˜์—ˆ์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "======================================[$NOW] ํ†ตํ•ฉ ๋ฐฑ ์˜คํ”ผ์Šค api Application Docker Container Health Check======================================" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [INFO] @Author(๋งŒ๋“ ์ด): ์ฃผ๋‹ˆ(junyharang8592@gmail.com)" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [INFO] LOG Directory ์กด์žฌ ํ•ฉ๋‹ˆ๋‹ค."
    echo "[$NOW] [INFO] LOG Directory ์กด์žฌ ํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [INFO] Nginx Health Check ๋Œ€์ƒ Container Name: ${TARGET_CONTAINER_NAME}" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

  else
      echo "[$NOW] [INFO] cicd-admin์€ mkdir ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์š”. ๊ด€๋ฆฌ์ž ํ˜น์€ DMSO ํฌ๋ฃจ์—๊ฒŒ ${LOG_DIR} ์ƒ์„ฑ์„ ์š”์ฒญํ•ด ์ฃผ์„ธ์š”. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
      exit 1
  fi

  nginxHealthCheck
}

nginxHealthCheck() {

  for loopCount in {1..2}
  do

    if [ $loopCount == 1 ];
    then
      echo "[$NOW] [INFO] ์ตœ์ดˆ ${NGINX_CONTAINER_NAME} ๋‚ด๋ถ€๋ง Health Check ์‹œ์ž‘ํ• ๊ฒŒ์š”."
      echo "[$NOW] [INFO] ์ตœ์ดˆ ${NGINX_CONTAINER_NAME} ๋‚ด๋ถ€๋ง Health Check ์‹œ์ž‘ํ• ๊ฒŒ์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
      serverIp=$INTERNAL_SERVER_IP
    else
      echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ์™ธ๋ถ€๋ง Health Check ์‹œ์ž‘ํ• ๊ฒŒ์š”."
      echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ์™ธ๋ถ€๋ง Health Check ์‹œ์ž‘ํ• ๊ฒŒ์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
      serverIp=$EXTERNAL_SERVER_IP
    fi

    echo "[$NOW] [INFO] ์‚ฌ์šฉ ๋ช…๋ น์–ด: curl -I http://${serverIp}:${NGINX_EXTERNAL_PORT}/api/test/profile | grep -oP 'HTTP/1.1 \K\d+' "
    echo "[$NOW] [INFO] ์‚ฌ์šฉ ๋ช…๋ น์–ด: curl -I http://${serverIp}:${NGINX_EXTERNAL_PORT}/api/test/profile | grep -oP 'HTTP/1.1 \K\d+' " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

    for retryCount in {1..10}
    do
      sleep 5
      echo "[$NOW] [INFO] ${retryCount} ๋ฒˆ์งธ Health Check๊ฐ€ ์‹œ์ž‘ ๋˜์—ˆ์–ด์š”."
      echo "[$NOW] [INFO] ${retryCount} ๋ฒˆ์งธ Health Check๊ฐ€ ์‹œ์ž‘ ๋˜์—ˆ์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
      responseCode=$(curl -I http://${serverIp}:${NGINX_EXTERNAL_PORT}/api/test/profile | grep -oP 'HTTP/1.1 \K\d+')
      command="curl -I http://${serverIp}:${NGINX_EXTERNAL_PORT}/api/test/profile | grep -oP 'HTTP/1.1 \K\d+'"

      if [ "$responseCode" == "200" ];
      then
        successCommand "${command}"

      else
        echo "[$NOW] [WARN] ${NGINX_CONTAINER_NAME}๊ฐ€ ๊ธฐ๋™ ์ค‘์ด์ง€๋งŒ, ๋‚ด๋ถ€ ์„œ๋น„์Šค์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”."
        echo "[$NOW] [WARN] ${NGINX_CONTAINER_NAME}๊ฐ€ ๊ธฐ๋™ ์ค‘์ด์ง€๋งŒ, ๋‚ด๋ถ€ ์„œ๋น„์Šค์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
        echo "[$NOW] [WARN] ${NGINX_CONTAINER_NAME} ์‚ญ์ œ ๋ฐ ์žฌ ๊ธฐ๋™ ์‹ค์‹œํ•ฉ๋‹ˆ๋‹ค."
        echo "[$NOW] [WARN] ${NGINX_CONTAINER_NAME} ์‚ญ์ œ ๋ฐ ์žฌ ๊ธฐ๋™ ์‹ค์‹œํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

        nginxDockerContainerErrorRemove
      fi

      responseCount=$(curl -I http://${serverIp}:${NGINX_EXTERNAL_PORT}/api/test/profile | grep "HTTP" | wc -l)
      command="curl -I http://${serverIp}:${NGINX_EXTERNAL_PORT}/api/test/profile | grep "HTTP" | wc -l"

      # up_count >= 1
      if [ ${responseCount} -ge 1 ];
      then
        echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} Container ์ƒํƒœ๊ฐ€ ์ •์ƒ์ด์—์š”."
        echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} Container ์ƒํƒœ๊ฐ€ ์ •์ƒ์ด์—์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

        successCommand "${command}"
        break

      else
        errorResponse=$(curl -I http://${serverIp}:${NGINX_EXTERNAL_PORT}/api/test/profile)

        echo "[$NOW] [ERROR] ${NGINX_CONTAINER_NAME} Container ์ƒํƒœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”."
        echo "[$NOW] [ERROR] ${NGINX_CONTAINER_NAME} Container ์ƒํƒœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
        echo "[$NOW] [ERROR] ๋ฌธ์ œ ๋‚ด์šฉ : ${errorResponse}"
        echo "[$NOW] [ERROR] ๋ฌธ์ œ ๋‚ด์šฉ : ${errorResponse}" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

        echo "[$NOW] [ERROR] ${NGINX_CONTAINER_NAME} Container ์ข…๋ฃŒ ๋ฐ ์‚ญ์ œ ์‹œ๋„ํ• ๊ฒŒ์š”."
        echo "[$NOW] [ERROR] ${NGINX_CONTAINER_NAME} Container ์ข…๋ฃŒ ๋ฐ ์‚ญ์ œ ์‹œ๋„ํ• ๊ฒŒ์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

        nginxDockerContainerErrorRemove
      fi

      if [ "${retryCount}" -eq 10 ];
        then
          echo "[$NOW] [ERROR] ${NGINX_CONTAINER_NAME} Container Health ์ƒํƒœ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”."
          echo "[$NOW] [ERROR] ${NGINX_CONTAINER_NAME} Container Health ์ƒํƒœ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
      fi

      echo "[$NOW] [WARN] ${NGINX_CONTAINER_NAME} Health Check ์ž‘์—…์— ์‹คํŒจํ•˜์˜€์–ด์š”."
      echo "[$NOW] [WARN] ${NGINX_CONTAINER_NAME} Health Check ์ž‘์—…์— ์‹คํŒจํ•˜์˜€์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

      echo "[$NOW] [ERROR] Nginx ์—ฐ๊ฒฐ ์—†์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒ ํ•ฉ๋‹ˆ๋‹ค."
      echo "[$NOW] [ERROR] Nginx ์—ฐ๊ฒฐ ์—†์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒ ํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
      exit 1
    done
  done
}

nginxDockerContainerErrorRemove() {
  echo "[$NOW] [INFO] ๊ธฐ์กด ${NGINX_CONTAINER_NAME} Docker Container ์ค‘์ง€ ๋ฐ ์‚ญ์ œ ์ž‘์—…์„ ์‹œ์ž‘ํ• ๊ฒŒ์š”."
  echo "[$NOW] [INFO] ๊ธฐ์กด ${NGINX_CONTAINER_NAME} Docker Container ์ค‘์ง€ ๋ฐ ์‚ญ์ œ ์ž‘์—…์„ ์‹œ์ž‘ํ• ๊ฒŒ์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

  stopContainerId=$(docker ps --filter "name=$NGINX_CONTAINER_NAME" --format "{{.ID}}")

  echo "[$NOW] [INFO] ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ํ†ตํ•ด docker ๊ธฐ๋™ ๋ช…๋ น์–ด ๋ณ€์ˆ˜ ์ •๋ณด : "
  echo "[$NOW] [INFO] ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ํ†ตํ•ด docker ๊ธฐ๋™ ๋ช…๋ น์–ด ๋ณ€์ˆ˜ ์ •๋ณด : " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
  echo "[$NOW] [INFO] ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ๋ฐ Host Name : ${NGINX_CONTAINER_NAME} "
  echo "[$NOW] [INFO] ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ๋ฐ Host Name : ${NGINX_CONTAINER_NAME}  : " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
  echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ์ปจํ…Œ์ด๋„ˆ Port Number : ${NGINX_EXTERNAL_PORT} "
  echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ์ปจํ…Œ์ด๋„ˆ Port Number : ${NGINX_EXTERNAL_PORT} : " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
  echo "[$NOW] [INFO] ์ข…๋ฃŒ ๋ฐ ์ œ๊ฑฐํ•  ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ : ${NGINX_CONTAINER_NAME} "
  echo "[$NOW] [INFO] ์ข…๋ฃŒ ๋ฐ ์ œ๊ฑฐํ•  ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ : ${NGINX_CONTAINER_NAME} " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
  echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ์ปจํ…Œ์ด๋„ˆ ID : ${stopContainerId} "
  echo "[$NOW] [INFO] ${NGINX_CONTAINER_NAME} ์ปจํ…Œ์ด๋„ˆ ID : ${stopContainerId} " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

  if ! docker stop $NGINX_CONTAINER_NAME;
  then
    echo "[$NOW] [ERROR] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${NGINX_CONTAINER_NAME}, Container ID: ${stopContainerId} ์ข…๋ฃŒ ์ž‘์—… ์‹คํŒจ ํ•˜์˜€์–ด์š”. ์Šคํฌ๋ฆฝํŠธ ์ข…๋ฃŒ ํ•ฉ๋‹ˆ๋‹ค."
    echo "[$NOW] [ERROR] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${NGINX_CONTAINER_NAME}, Container ID: ${stopContainerId} ์ข…๋ฃŒ ์ž‘์—… ์‹คํŒจ ํ•˜์˜€์–ด์š”. ์Šคํฌ๋ฆฝํŠธ ์ข…๋ฃŒ ํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    exit 1

  else
    echo "[$NOW] [INFO] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${NGINX_CONTAINER_NAME}, Container ID: ${stopContainerId} ์ข…๋ฃŒ ์ž‘์—… ์„ฑ๊ณต ํ•˜์˜€์–ด์š”."
    echo "[$NOW] [INFO] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${NGINX_CONTAINER_NAME}, Container ID: ${stopContainerId} ์ข…๋ฃŒ ์ž‘์—… ์„ฑ๊ณต ํ•˜์˜€์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
    echo "[$NOW] [INFO] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${NGINX_CONTAINER_NAME}, Container ID: ${stopContainerId} ์‚ญ์ œ ์ž‘์—… ์ง„ํ–‰ํ• ๊ฒŒ์š”."
    echo "[$NOW] [INFO] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${NGINX_CONTAINER_NAME}, Container ID: ${stopContainerId} ์‚ญ์ œ ์ž‘์—… ์ง„ํ–‰ํ• ๊ฒŒ์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

    if ! docker rm $NGINX_CONTAINER_NAME;
    then
      echo "[$NOW] [ERROR] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${NGINX_CONTAINER_NAME}, Container ID: ${stopContainerId} ์‚ญ์ œ ์ž‘์—… ์‹คํŒจ ํ•˜์˜€์–ด์š”. ์Šคํฌ๋ฆฝํŠธ ์ข…๋ฃŒ ํ•ฉ๋‹ˆ๋‹ค."
      echo "[$NOW] [ERROR] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${NGINX_CONTAINER_NAME}, Container ID: ${stopContainerId} ์‚ญ์ œ ์ž‘์—… ์‹คํŒจ ํ•˜์˜€์–ด์š”. ์Šคํฌ๋ฆฝํŠธ ์ข…๋ฃŒ ํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
      exit 1

    else
      echo "[$NOW] [INFO] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${TARGET_CONTAINER_NAME}, Container ID: ${stopContainerId} ์‚ญ์ œ ์ž‘์—… ์„ฑ๊ณต ํ•˜์˜€์–ด์š”."
      echo "[$NOW] [INFO] ๊ธฐ์กด ๋™์ž‘ ์ค‘์ด๋˜ Container ์ด๋ฆ„: ${TARGET_CONTAINER_NAME}, Container ID: ${stopContainerId} ์‚ญ์ œ ์ž‘์—… ์„ฑ๊ณต ํ•˜์˜€์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1

      $NGINX_SHELL_SCRIPT_DIRECTORY/nginxDockerContainerRun.sh;
    fi
  fi
}

failedCommand() {
  local command=$1

  echo "[$NOW] [ERROR] ${command} ๋ช…๋ น์–ด ์ž‘์—… ์‹คํŒจํ•˜์˜€์–ด์š”. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค."
  echo "[$NOW] [ERROR] ${command} ๋ช…๋ น์–ด ์ž‘์—… ์‹คํŒจํ•˜์˜€์–ด์š”. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
  exit 1
}

successCommand() {
  local command=$1

  echo "[$NOW] [INFO] ${command} ๋ช…๋ น์–ด ์ž‘์—… ์„ฑ๊ณตํ•˜์˜€์–ด์š”."
  echo "[$NOW] [INFO] ${command} ๋ช…๋ น์–ด ์ž‘์—… ์„ฑ๊ณตํ•˜์˜€์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
}


checkLogDirectory

operationDockerStatus=$(docker ps -a)

echo "[$NOW] [INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ž‘์—… ์ค‘ Nginx Docker Container Health Check ์ž‘์—…์ด ๋๋‚ฌ์–ด์š”."
echo "[$NOW] [INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ LOG ์œ„์น˜ : ${LOG_DIR}"
echo "[$NOW] [INFO] ๊ธฐ๊น”๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋ฒ„ API ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ž‘์—… ์ค‘ Nginx Docker Container Health Check ์ž‘์—…์ด ๋๋‚ฌ์–ด์š”." >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
echo "[$NOW] [INFO] ํ˜„์žฌ ์šด์˜ ์ค‘์ธ Docker Container ์ •๋ณด : "
echo "[$NOW] [INFO] ํ˜„์žฌ ์šด์˜ ์ค‘์ธ Docker Container ์ •๋ณด : " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
echo "[$NOW] [INFO] ${operationDockerStatus} "
echo "[$NOW] [INFO] ${operationDockerStatus} " >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1
echo -e "=====================================================================================================\n"
echo -e "=====================================================================================================\n" >> $LOG_DIR/"$SAVE_LOG_DATE"-deploy.log 2>&1


NGINX ๋„์ปค ์ปจํ…Œ์ด๋„ˆ Health Check ๊ด€๋ จ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์œ„์™€ ๊ฐ™์ด ์ค€๋น„ํ•ด ๋ณด์•˜์–ด์š”.

์ด๋ฒˆ ๋‚ด์šฉ๋„ ์ด ์ „์— ์ž‘์„ฑํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ Health Check ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ถ„์„ํ•ด ๋‘์—ˆ์œผ๋‹ˆ
์ด ๊ณณ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š”.


 

[CI/CD] Jekins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ข Application Server Docker Job (โ‘ข Application Docker Health Check)

๐Ÿ—‚ ๋ชฉ์ฐจ โœ… [CI/CD] Jenkins์™€ Gitea ์—ฐ๋™ โœ… [CI/CD] Jenkins Trigger ์ •๋ณด Discord๋กœ ๋ณด๋‚ด๊ธฐ โœ… [CI/CD] ์ •์  ์ฝ”๋“œ ๋ถ„์„ ํˆด SonarQube์™€ Jenkins ์—ฐ๋™ โœ… [CI/CD] SonarQube๋ฅผ ํ†ตํ•ด Code Convention ์ ์šฉ โœ… [DevOps] JAVA Gradle JaCoCo

junyharang.tistory.com

 

 

 

        ๐Ÿ“ฆ checkHealthCheck()

NGINX Health Check ๋ถ€๋ถ„์—์„œ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋‚ด์šฉ์ด ์žˆ์–ด์š”.

nginxHealthCheck.sh 47 ~ 59๋ฒˆ์งธ ์ค„

๋ฐ˜์‘ํ˜•


์ตœ์ดˆ 47๋ฒˆ์งธ ์ค„์—์„œ ๋ฐ˜๋ณต๋ฌธ์ด ๋‘ ๋ฒˆ ๋Œ๊ฒŒ ํ•œ ์ด์œ ๋Š” 50๋ฒˆ์งธ ์ค„์—์„œ ๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์ตœ์ดˆ ๋‚ด๋ถ€๋ง IP๋ฅผ ํ†ตํ•ด
HTTP Health Check๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•จ์ด๊ณ ,
๋‘๋ฒˆ์งธ๋Š” NAT ๋œ ์™ธ๋ถ€๋ง IP์— ๋Œ€ํ•œ Health Check๊ฐ€ ์ง„ํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ค€ ๋ถ€๋ถ„์ด์—์š”.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ ๋‚ด, ์™ธ๋ถ€๋ง ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ํ†ต์‹ ์ด ๋˜๋Š”์ง€๋ฅผ ํ™•์ธํ•ด ์ฃผ์—ˆ์–ด์š”.

 

 

 

 

NGINX ์ฟก๋ถ : 115๊ฐ€์ง€ ๋ ˆ์‹œํ”ผ๋กœ ๋ฐฐ์šฐ๋Š” ๊ณ ์„ฑ๋Šฅ ๋ถ€ํ•˜๋ถ„์‚ฐ ๋ณด์•ˆ ์„œ๋ฒ„ ๋ฐฐํฌ์™€ ๊ด€๋ฆฌ 2ํŒ

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

์ด์ „ ๊ธ€: [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ฃ NGINX Server Docker Job (โ‘ก NGINX Docker ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ)

๋‹ค์Œ ๊ธ€: [CI/CD] Jenkins + Docker๋ฅผ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ - โ‘ฃ NGINX Server Docker Job (โ‘ข NGINX ์žฌ ์„ค์ •)

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•