2023. 6. 15. 22:01ใSystem ์์ ์ค/LINUX


๋ฆฌ๋ ์ค ์ปค๋งจ๋๋ผ์ธ ์ ์คํฌ๋ฆฝํธ ๋ฐ์ด๋ธ
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 ๋ช
๋ น์ด๋ก ์ฒ๋ฆฌํ์ฌ ๊ทธ ๊ฒฐ๊ณผ ๊ฐ์ ๋ณ์์ ๋ด๋๋ก ํ์ฌ ์ฃผ์์ด์.

์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ์ด๋ ๊ฒ ์ปจํ
์ด๋ ์ด๋ฆ์ ํด๋นํ๋ ์ปจํ
์ด๋ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ด์.

์ด์ ์์ ๊ฐ์ด 132๋ฒ์งธ ์ค์์ check_container_existence_status()๋ฅผ
ํธ์ถํ์ฌ ๋ณธ๊ฒฉ์ ์ธ ์ฌ์ ์ด ์์๋๊ฒ ํด ์ฃผ์์ด์.
๐ฆ Check_container_existence_status()

์ต์ด 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๋ฒ์งธ ์ค์ ํด๋น ๋ฐ๋ชฌ์ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํด ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด ์ฃผ์์ด์.

๋ฐ๋ชฌ์ด ํ์ฑํ๊ฐ ๋์ด ์์ผ๋ฉด ์์ ๊ฐ์ด 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

์ฐธ๊ณ ๋ก ์ด๋ฒ ์ ์คํฌ๋ฆฝํธ๋ ์์ ๊ฐ์ด ์์ ํ๋ก๊ทธ๋จ์ ๋ฑ๋กํด ์ฃผ์์ด์.

๐ฆ ์ ๋๋์ง ํ์ธ!
์ ๋๋์ง ํ์ธ์ ์ํด ์๋ฒ๋ฅผ ์ฌ๊ธฐ๋ ํด ์ค๊ฑฐ์์.

๊ทธ ์ ์ ํ
์คํธํ๋ฉด์ ์๊ธด ๋ก๊ทธ๋ค์ ๋จผ์ ์น๋ค ์ง์์ค๊ฒ์.


Log๋ฅผ ํ์ธํด๋ณด๋ ์ ์งํ๋ ๊ฑธ ํ์ธํ ์ ์์์ด์.
๋ํ, ์ฌ ๊ธฐ๋์ ํ์ง ์์ผ๋ฉด ์ ์ํ ์ ์์๋ gitea web service๋ ์๋์ ๊ฐ์ด ์ ์ ์ ์ ๊ฐ๋ฅํ์ด์.

๋ฆฌ๋ ์ค ์ปค๋งจ๋๋ผ์ธ ์ ์คํฌ๋ฆฝํธ ๋ฐ์ด๋ธ
COUPANG
www.coupang.com
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."

'System ์์ ์ค > LINUX' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Linux]Ubuntu 22.04.01 LTS HDD ์ถ๊ฐ (0) | 2023.07.07 |
---|---|
[Linux]Ubuntu 22.04.01 LTS Desktop ์ค์น (0) | 2023.07.07 |
[Shell Script] Bash Shell Script๋ฅผ ์ด์ฉํ Docker ์๋ ๊ธฐ๋ (0) | 2023.06.14 |
[Shell Script] ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ํน์ ํ๋ก์ธ์ค ์ํ ํ์ธ ๋ค ์๋ ๊ธฐ๋ ์ํค๊ธฐ (0) | 2023.06.14 |
[Linux] SSL/TLS ์ธ์ฆ์ ๋ง๋ค๊ธฐ (0) | 2022.11.16 |