[Shell Script] ์„œ๋ฒ„ ์žฌ๋ถ€ํŒ… ์‹œ Docker ์•ˆ์— ํŠน์ • Deamon ์ž๋™ ๊ธฐ๋™๋˜๊ฒŒ ๋งŒ๋“ค๊ธฐ

2023. 6. 15. 22:01ใ†System ์ž‘์—…์‹ค/LINUX

728x90
๋ฐ˜์‘ํ˜•

 

 




 

 

๋ฆฌ๋ˆ…์Šค ์ปค๋งจ๋“œ๋ผ์ธ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋ฐ”์ด๋ธ”

COUPANG

www.coupang.com

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

 

 

 

 

 

๐Ÿš€ Docker ์•ˆ์˜ Deamon ์ž๋™ ๊ธฐ๋™๋˜๊ฒŒ ๋งŒ๋“ค๊ธฐ

    ๐Ÿ”ฝ ๊ฐœ์š”

        ๐Ÿ“ฆ ์†Œ๊ฐœ

์ฃผ๋‹ˆ๋Š” ์ด๋ฏธ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š” Docker Container Image ์ค‘ ์˜ˆ์ „์— ํฌ์ŠคํŒ…ํ–ˆ๋˜ gitea๊ฐ€ Host ์„œ๋ฒ„๊ฐ€ ์žฌ๋ถ€ํŒ… ๋˜๊ฑฐ๋‚˜ ํ•˜๋ฉด Container๋Š” ์ž˜ ์˜ฌ๋ผ์˜ค๋Š”๋ฐ, ๋‚ด๋ถ€ gitea daemon์ด ์ž๋™์œผ๋กœ ์˜ฌ๋ผ์˜ค์ง€ ์•Š์•„ ์ˆ˜ ์ž‘์—…์œผ๋กœ ๊ธฐ๋™ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ ์„ ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ์–ด์š”.

 

[Synology NAS] ๋‚˜๋งŒ์˜ GitHub ๋งŒ๋“ค๊ธฐ - Git Server์™€ Gitea ์„ค์น˜

๐Ÿ—‚ ๋ชฉ์ฐจ โ— [Synology NAS] ๋‚˜๋งŒ์˜ GitHub ๋งŒ๋“ค๊ธฐ - Git Server์™€ Gitea ์„ค์น˜ โ— [Synology NAS] ๋‚˜๋งŒ์˜ Jenkins ๋งŒ๋“ค๊ธฐ ์‹œ๋†€๋กœ์ง€ Synology DS218 2BAY NAS ๊ณต์‹ํŒ๋งค์  COUPANG www.coupang.com "์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™

junyharang.tistory.com


์˜ค๋Š˜๋„ ์—ญ์‹œ๋‚˜! ์ปดํ“จํ„ฐ๋ฅผ ์žฅ๋‚œ๊ฐ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ์ฃผ๋‹ˆ ๋‹ต๊ฒŒ ์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ?๋ฅผ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‹œ๋„๋ฅผ ํ•ด๋ดค์—ˆ์–ด์š”.

์ผ๋‹จ ์ƒ๊ฐํ•ด๋‚ธ ๊ฒƒ์€ gitea Container ๋‚ด๋ถ€์—์„œ ์•„๋ž˜ ๊ธ€์—์„œ ์ •๋ฆฌํ–ˆ๋˜ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค๊ณ ,

 

[Shell Script] ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ํ™•์ธ ๋’ค ์ž๋™ ๊ธฐ๋™ ์‹œํ‚ค๊ธฐ

๋ฆฌ๋ˆ…์Šค ์ปค๋งจ๋“œ๋ผ์ธ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋ฐ”์ด๋ธ” COUPANG www.coupang.com "์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค." ๐Ÿš€ ํ”„๋กœ์„ธ์Šค ๊ธฐ๋™ ์ž๋™ํ™” ๐Ÿ”ฝ ๊ฐœ์š” ๐Ÿ“ฆ ์†Œ

junyharang.tistory.com


์•„๋ž˜ ๊ธ€์—์„œ ์ •๋ฆฌํ•œ systemd๋ฅผ ์ด์šฉํ•ด์„œ ์ž๋™ํ™”๋ฅผ ํ•ด๋ณด๋ ค ํ–ˆ์—ˆ์–ด์š”.

 

[Shell Script] Bash Shell Script๋ฅผ ์ด์šฉํ•œ Docker ์ž๋™ ๊ธฐ๋™

๋ฆฌ๋ˆ…์Šค ์ปค๋งจ๋“œ๋ผ์ธ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋ฐ”์ด๋ธ” COUPANG www.coupang.com "์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค." ๐Ÿš€ Docker ์ž๋™ ๊ธฐ๋™๋˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๐Ÿ”ฝ ๊ฐœ์š”

junyharang.tistory.com


ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์ด ๋˜์—ˆ๋‹ค๋ฉด ์ด๋ฏธ systemctl enable gitea๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๊ฒ ์ง€๋งŒ, ์ด๋ฏธ ๋“ฑ๋ก ๋˜์–ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ Host Server์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์„ฑ๊ณตํ•˜์—ฌ ์ •๋ฆฌํ•˜๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค.



    ๐Ÿ”ฝ Shell Script

        ๐Ÿ“ฆ ๋งŒ๋“ค๊ธฐ

#!/bin/bash

# ๋ช…๋ น์–ด ์‹คํŒจ ์‹œ ๋ฐ”๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด
set -e

NOW=$(date +"%y-%m-%d %T")
DATE=$(date +%Y%m%d%H%M)

LOG_DIR="/var/log/docker/gitea/run"

echo "======================================[$NOW] Gitea Container ์žฌ ๊ธฐ๋™ ์Šคํฌ๋ฆฝํŠธ ๋™์ž‘======================================" >> $LOG_DIR/$DATE-container-run.log 2>&1
echo "@Author(๋งŒ๋“ ์ด): ์ฃผ๋‹ˆ(junyharang8592@gmail.com)" >> $LOG_DIR/$DATE-container-run.log 2>&1

if [ -d "$LOG_DIR" ];
then
         echo "[$NOW] Directory๊ฐ€ ์กด์žฌ ํ•ฉ๋‹ˆ๋‹ค" >> $LOG_DIR/$DATE-container-run.log 2>&1
 else
         mkdir -p $LOG_DIR

         if [ $? != 0 ];
         then
                 echo "[$NOW] Log ์ €์žฅ์„ ์œ„ํ•œ Directory ๋งŒ๋“ค๊ธฐ ์‹คํŒจ ํ•˜์˜€์Šต๋‹ˆ๋‹ค."
                 exit 1
         else
                 echo "[$NOW] Directory๊ฐ€ ์กด์žฌ ํ•˜์ง€ ์•Š์•„ ์ƒ์„ฑ ํ•˜์˜€์Šต๋‹ˆ๋‹ค." >> $LOG_DIR/$DATE-container-run.log 2>&1
         fi
fi

echo "[$NOW] gitea Docker Container ๊ธฐ๋™ ์—ฌ๋ถ€ ์ƒํƒœ ๋ฐ ์ž๋™ ๊ธฐ๋™ ์ž‘์—…์„ ์‹œ์ž‘ํ• ๊ฒŒ์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1
echo "[$NOW] ์ฒซ๋ฒˆ์งธ ์ž‘์—…. gitea Container๊ฐ€ ์กด์žฌ ํ™•์ธ ํ• ๊ฒŒ์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1

CONTAINER_NAME="junyss-gitea"
container_existence_status=$(docker ps --filter "name=$container_name")

check_container_existence_status() {
        sleep 5

        echo "[$NOW] gitea container ์กด์žฌ ์—ฌ๋ถ€ :" >> $LOG_DIR/$DATE-container-run.log 2>&1
        echo "$container_existence_status" >> $LOG_DIR/$DATE-container-run.log 2>&1

        check_container_info=$(docker ps --format '{{.Names}}' | grep "^${CONTAINER_NAME}\$")

        if [ ! -z "$check_container_info" ];
        then
                echo "[$NOW] gitea container๊ฐ€ ์ •์ƒ ์ž‘๋™ ์ค‘ ์ž…๋‹ˆ๋‹ค." >> $LOG_DIR/$DATE-container-run.log 2>&1
                echo "[$NOW] gitea container์— gitea Deamon ๊ธฐ๋™ ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/$DATE-container-run.log 2>&1

                send_deamon_up_commnad
        else
                echo "[$NOW] gitea container๊ฐ€ ์ •์ƒ ์‹คํ–‰๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜, ์กด์žฌ ํ•˜์ง€ ์•Š์•„์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1
                echo "[$NOW] gitea container ๊ธฐ๋™์„ ์‹œ๋„ํ• ๊ฒŒ์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1

                start_container
        fi
}

start_container() {
        echo "[$NOW] gitea container ๊ธฐ๋™ ์ž‘์—… ์‹œ์ž‘ ํ•ฉ๋‹ˆ๋‹ค." >> $LOG_DIR/$DATE-container-run.log 2>&1

        docker restart $CONTAINER_NAME

        if [ $? != 0 ];
        then
                echo "[$NOW] gitea container ๊ธฐ๋™ ์ž‘์—… ์‹คํŒจํ•˜์˜€์–ด์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1
                exit 1
        else

                echo "[$NOW] gitea container ๊ธฐ๋™ ์ž‘์—… ์„ฑ๊ณต ํ•˜์˜€์–ด์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1
                echo "[$NOW] gitea container ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๋‹ค์‹œ ํ™•์ธํ• ๊ฒŒ์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1

                check_container_existence_status
        fi
}

send_deamon_up_commnad() {
        echo "[$NOW] gitea container์— gitea Deamon ๊ธฐ๋™ ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ• ๊ฒŒ์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1

        process_name="gitea"

         echo "[$NOW] gitea container์— gitea Deamon ๊ธฐ๋™ ๋ช…๋ น์–ด ์‹คํ–‰ ์ƒํƒœ :" >> $LOG_DIR/$DATE-container-run.log 2>&1

        docker exec $CONTAINER_NAME bash -c "systemctl restart $process_name" >> $LOG_DIR/$DATE-container-run.log 2>&1

        gitea_process_status=$(docker exec $CONTAINER_NAME systemctl is-active $process_name)

        echo "[$NOW] gitea process ์ƒํƒœ ์ •๋ณด : $gitea_process_status" >> $LOG_DIR/$DATE-container-run.log 2>&1

        if [ "$gitea_process_status" == "inactive" ];
        then
                echo "[$NOW] gitea container์— gitea Deamon ๊ธฐ๋™ ๋ช…๋ น์–ด ์ „๋‹ฌ ํ•˜์˜€์œผ๋‚˜, ๊ธฐ๋™์— ์‹คํŒจํ•˜์˜€์–ด์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1
                exit 1
        else
                echo "[$NOW] gitea container์— gitea Deamon ๊ธฐ๋™๋˜์—ˆ์–ด์š”." >> $LOG_DIR/$DATE-container-run.log 2>&1
        fi
}

check_container_existence_status

์ฃผ๋‹ˆ๊ฐ€ ๋งŒ๋“  ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์œ„์™€ ๊ฐ™์•„์š”.

์ด์ œ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ถ„์„ํ•ด ๋ณผ๊ฒŒ์š”.


set -e ๋ช…๋ น์–ด์— ๋Œ€ํ•ด์„œ๋Š” ์ด ๊ณณ์— ์ •์„ฑ์Šค๋Ÿฝ๊ฒŒ ์ค€๋น„ ํ•ด ๋‘์—ˆ์–ด์š”.

6 ~ 9๋ฒˆ์งธ ์ค„์— ์ƒ์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ๋‚ ์งœ๊ฐ’๊ณผ Log๊ฐ€ ์ €์žฅ๋  ๋””๋ ‰ํ„ฐ๋ฆฌ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๊ฒŒ ํ•ด ์ฃผ์—ˆ์–ด์š”.

17๋ฒˆ์งธ ์ค„์— LOG_DIR ์ƒ์ˆ˜ ๋ณ€์ˆ˜์— ๋‹ด๊ธด Log Directory๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•ด ์ฃผ๊ณ  ์žˆ์–ด์š”.

์—†๋‹ค๋ฉด mkdir -p ๋ช…๋ น์–ด๋กœ ํ•ด๋‹น Directory๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ณ , ๋ช…๋ น์–ด๊ฐ€ ์ž˜ ์ฒ˜๋ฆฌ ๋˜์—ˆ๋Š”์ง€๋ฅผ
23๋ฒˆ์งธ ~ 29๋ฒˆ์งธ ์ค„๊นŒ์ง€ ํ™•์ธํ•˜๊ณ , ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ๋‘์—ˆ์–ด์š”.


๊ทธ๋ฆฌ๊ณ  ์ด ๊ณณ์—์„œ gitea Container ์ด๋ฆ„๊ณผ Container๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ
docker ps ๋ช…๋ น์–ด๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ณ€์ˆ˜์— ๋‹ด๋„๋ก ํ•˜์—ฌ ์ฃผ์—ˆ์–ด์š”.

docker ps --filter "name={Cotainer Name}"

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”.


์ด์ œ ์œ„์™€ ๊ฐ™์ด 132๋ฒˆ์งธ ์ค„์—์„œ check_container_existence_status()๋ฅผ
ํ˜ธ์ถœํ•˜์—ฌ ๋ณธ๊ฒฉ์ ์ธ ์—ฌ์ •์ด ์‹œ์ž‘๋˜๊ฒŒ ํ•ด ์ฃผ์—ˆ์–ด์š”.



        ๐Ÿ“ฆ Check_container_existence_status()

728x90


์ตœ์ดˆ 39๋ฒˆ์งธ ~ 44๋ฒˆ์งธ๊นŒ์ง€๋Š” ํ•ด๋‹น ์‰˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ๋˜๋ฉด sleep 5 ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด 5์ดˆ ๋™์•ˆ ๋Œ€๊ธฐํ•˜๋„๋ก ํ•ด์ฃผ์—ˆ๋Š”๋ฐ, ์ด ๋•Œ, ์˜ˆ์˜๊ฒŒ Loading ํ‘œ์‹œ ์ฒ˜๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด ์ค€ ๊ฑฐ์—์š”.

stdbuf ๋ช…๋ น์–ด๋Š” ์ถœ๋ ฅ ๋ฒ„ํผ๋ง์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด์—์š”.

์œ„์™€ ๊ฐ™์ด sleep ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, stdbuf ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ ๋ฒ„ํผ๋ง์„ ๋„๋„๋ก ๋ณ€๊ฒฝํ•ด ์ค€ ๊ฑฐ์—์š”.

์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋ฐ, ์ด๋Š” ์ถœ๋ ฅ ๋ฒ„ํผ๋ง ๋•Œ๋ฌธ์ด์—์š”.

์‰˜์—์„œ ์ถœ๋ ฅ์€ ๋ฒ„ํผ์— ๋ชจ์•„์ ธ ํŠน์ • ํฌ๊ธฐ๋‚˜ ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ํ•œ๋ฒˆ์— ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋Š” ๋ฐฉ์‹์„ ์“ฐ๊ณ  ์žˆ์–ด์š”.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋”ฉ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ‘œ์‹œ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์–ด์š”.

-oL ์˜ต์…˜์€ ์ถœ๋ ฅ ๋ฒ„ํผ๋ง์„ ๋ผ์ธ ๋‹จ์œ„๋กœ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด์—์š”.

์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋˜๋ฉด ๋กœ๋”ฉ ํ‘œ์‹œ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถœ๋ ฅ๋˜์–ด ๋ณด๋‹ค ์˜ˆ์œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

44๋ฒˆ์งธ ์ค„์— ๋กœ๋”ฉ ํ‘œ์‹œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ,
์ด ๋•Œ, $!๋ฅผ ์ „๋‹ฌํ•˜์—ฌ Back Ground Process PID๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ค€ ๊ฒƒ์ด์—์š”.

49๋ฒˆ์งธ ์ค„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด


์œ„์™€ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”.

์ด ๊ฐ’์„ check_container_info ๋ณ€์ˆ˜์— ๋‹ด์•„ ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ if๋ฌธ์„ ํ†ตํ•ด check_container_info ๋ณ€์ˆ˜์— ๋‹ด๊ธด ๊ฐ’์ด Null ์ธ์ง€ ์•„๋‹Œ์ง€ (-z)๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋Š”๋ฐ -z ์•ž์— ! (Not)์„ ๋ถ™ํ˜€์คŒ์œผ๋กœ Null์ด ์•„๋‹ˆ๋ฉด then ์ ˆ์ด ์ž‘๋™ํ•˜๊ณ , Null์ด๋ฉด else ์ ˆ์ด ์ž‘๋™ํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.


 

        ๐Ÿ“ฆ send_deamon_up_command()

์ด๋ฒˆ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜ ๋ถ€๋ถ„์ด์—์š”.

๋ฐ˜์‘ํ˜•


100๋ฒˆ์งธ ์ค„ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ Container ๋‚ด๋ถ€์— ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ•ด์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.
์ฆ‰, junyss-gitea๋ผ๋Š” Container์— systemctl restart $process_name ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ•˜๋ฏ€๋กœ์จ
ํ•ด๋‹น ๋ฐ๋ชฌ์ด ๊ธฐ๋™๋  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ค€ ๋ถ€๋ถ„์ด์—์š”.

๊ทธ๋Ÿฐ ๋’ค 102๋ฒˆ์งธ ์ค„์— ํ•ด๋‹น ๋ฐ๋ชฌ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์—ˆ์–ด์š”.

docker exec {Docker Container Name} systemctl is-active {Container ๋‚ด๋ถ€ ํŠน์ • Daemon Name}



๋ฐ๋ชฌ์ด ํ™œ์„ฑํ™”๊ฐ€ ๋˜์–ด ์žˆ์œผ๋ฉด ์œ„์™€ ๊ฐ™์ด active๋ผ๋Š” ๋ฌธ์ž์—ด์ด ๋ฐ˜ํ™˜๋  ๊ฒƒ์ด์—์š”.
๋งŒ์•ฝ ์•„๋‹ˆ๋ผ๋ฉด? inactive๋ผ๋Š” ๋ฌธ์ž์—ด์ด ๋ฐ˜ํ™˜ ๋œ๋‹ต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  106๋ฒˆ์งธ ์ค„์— gitea_process_status ๋ณ€์ˆ˜์— ๋‹ด๊ธด ๋ฌธ์ž์—ด์ด inactive์™€ ๊ฐ™์€์ง€ ๋ฌผ์–ด๋ณด๊ณ , ๊ฐ™๋‹ค๋ฉด then ์ ˆ์„ ํ†ตํ•ด ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ , ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐ”๋กœ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ , ์•„๋‹ˆ๋ฉด ๊ธฐ๋™์ด ๋˜์—ˆ๋‹ค๋Š” ๊ฑธ ์•Œ๋ ค์ฃผ๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.

 

 

 

        ๐Ÿ“ฆ start_container()

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๋ฐ๋ชฌ ๊ธฐ๋™ ๋ช…๋ น์–ด๋Š” ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†์„ ๊ฑฐ์—์š”.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—
Check_container_existence_status() ์—์„œ ๊ธฐ๋™ ์—ฌ๋ถ€๋ฅผ ๋จผ์ € ํ™•์ธํ•˜๊ณ , ๊ธฐ๋™ ๋˜๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด start_container()๊ฐ€ ์ž‘๋™๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ฃผ์—ˆ์–ด์š”.


73๋ฒˆ์งธ ์ค„์— docker restart ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ธฐ๋™ ๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ์—ˆ๊ณ ,

75๋ฒˆ์งธ if๋ฌธ์—์„œ ํ•ด๋‹น ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜์—ฌ 0์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ๋ฅผ ์“ฐ๊ณ , ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ๊ณ ,

์•„๋‹ˆ๋ผ๋ฉด check_container_existence_status()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋™ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก
์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.

 

 

 

 

 

        ๐Ÿ“ฆ show_loading()


์œ„ ํ•จ์ˆ˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค PID๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๊ฒŒ ๋˜์š”.

๋˜ํ•œ, ASCII ์•„ํŠธ ๋Œ€์‹  ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋”ฉ ์• ๋‹ˆ๋งค์ด์…˜์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

118๋ฒˆ์งธ ์ค„์— ๋กœ๋”ฉ ํ‘œ์‹œ์— ์‚ฌ์šฉ๋  delay๋ฅผ ์„ค์ •ํ•ด ์ฃผ๊ณ , ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ frames ๋ฐฐ์—ด์— ๋“ฑ๋ก๋œ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์„ ํฌํ•จํ•˜๊ฒŒ ํ•ด์„œ ๊ฐ ํ”„๋ ˆ์ž„์„ ์ˆœํ™˜ํ•˜๋ฉด์„œ ๋กœ๋”ฉ ํ‘œ์‹œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.

๋กœ๋”ฉ ํ‘œ์‹œ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์†๋„๋Š” delay ๋ณ€์ˆ˜์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ํ”„๋ ˆ์ž„์€ frames ๋ฐฐ์—ด์„ ํ†ตํ•ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ž‘์—…์ด ์ฒดํฌ ๋งˆํฌ ํ‘œ์‹œ๊ฐ€ ๋”ฑ! ํ•˜๊ณ  ํ‘œ์‹œ๊ฐ€ ๋˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

 

 

 

    ๐Ÿ”ฝ ์ž๋™ํ™” ์ž‘์—…

        ๐Ÿ“ฆ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋ถ€ํŒ… ์‹œ ๊ธฐ๋™ ๋˜๊ฒŒ ํ•˜๊ธฐ

ํ•ด๋‹น ์ž‘์—…์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ด ๊ณณ์— ์ •์„ฑ์Šค๋Ÿฝ๊ฒŒ ์ค€๋น„ํ•ด ๋‘์—ˆ์–ด์š”.

 

[Shell Script] Bash Shell Script๋ฅผ ์ด์šฉํ•œ Docker ์ž๋™ ๊ธฐ๋™

๋ฆฌ๋ˆ…์Šค ์ปค๋งจ๋“œ๋ผ์ธ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋ฐ”์ด๋ธ” COUPANG www.coupang.com "์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค." ๐Ÿš€ Docker ์ž๋™ ๊ธฐ๋™๋˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๐Ÿ”ฝ ๊ฐœ์š”

junyharang.tistory.com



vim /etc/systemd/system/{์ž„์˜์˜ ์„œ๋น„์Šค ์ด๋ฆ„}.service


์ฐธ๊ณ ๋กœ ์ด๋ฒˆ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์œ„์™€ ๊ฐ™์ด ์‹œ์ž‘ ํ”„๋กœ๊ทธ๋žจ์— ๋“ฑ๋กํ•ด ์ฃผ์—ˆ์–ด์š”.







 

        ๐Ÿ“ฆ ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธ!

์ž˜ ๋˜๋Š”์ง€ ํ™•์ธ์„ ์œ„ํ•ด ์„œ๋ฒ„๋ฅผ ์žฌ๊ธฐ๋™ ํ•ด ์ค„๊ฑฐ์—์š”.


๊ทธ ์ „์— ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ์ƒ๊ธด ๋กœ๊ทธ๋“ค์„ ๋จผ์ € ์‹น๋‹ค ์ง€์›Œ์ค„๊ฒŒ์š”.

reboot




Log๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ์ž˜ ์ง„ํ–‰๋œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”.

๋˜ํ•œ, ์žฌ ๊ธฐ๋™์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ ‘์†ํ•  ์ˆ˜ ์—†์—ˆ๋˜ gitea web service๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์ƒ ์ ‘์† ๊ฐ€๋Šฅํ–ˆ์–ด์š”.





 

 

 

๋ฆฌ๋ˆ…์Šค ์ปค๋งจ๋“œ๋ผ์ธ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋ฐ”์ด๋ธ”

COUPANG

www.coupang.com

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

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•