giip
SES Proposal
4 min read

Docker ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ ๊ฐ€์ด๋“œ

Docker ์ธ์Šคํ„ด์Šค๋Š” GIIP ์—์ด์ „ํŠธ๋ฅผ ์›๊ฒฉ ์„œ๋ฒ„/PC์— ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌํ•˜๊ณ , GIIP ์›น์—์„œ ์ƒ์„ฑยท์กฐํšŒยทํ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ํ† ํฐ์„ ๋Œ€์ƒ PC์— ์ „๋‹ฌํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋™ํ•˜๋ฉด, ๊ทธ PC๊ฐ€ GIIP ์—์ด์ „ํŠธ(1๋ถ„๋งˆ๋‹ค ํด๋ง)์™€ slack-bot(์„ ํƒ)์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿข Docker ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’

๐Ÿ“‹ ๊ฐœ์š”

Docker ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ ํŽ˜์ด์ง€์—์„œ๋Š” giip-fde-agent Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์›๊ฒฉ PC/์„œ๋ฒ„์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ GIIP ์„œ๋ฒ„๊ฐ€ AES-256-GCM์œผ๋กœ ์ž๊ฒฉ์ฆ๋ช…์„ ์•”ํ˜ธํ™”ํ•ด ์ €์žฅํ•˜๊ณ , ํ† ํฐ์„ 1ํšŒ๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ ์ด ํ™”๋ฉด์€ ๊ด€๋ฆฌ์ž ์ „์šฉ์ž…๋‹ˆ๋‹ค. ์ ‘๊ทผํ•˜๋ ค๋ฉด ๊ด€๋ฆฌ์ž ๋ ˆ๋ฒจ **uLevel >= 70**์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฏธ๋งŒ ์‚ฌ์šฉ์ž๋Š” ํ™ˆ์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ” ํ™”๋ฉด ๊ตฌ์„ฑ

1. ์ƒ๋‹จ ํ—ค๋”

  • ํŽ˜์ด์ง€ ์ œ๋ชฉ: "Docker ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ"
  • + Create Docker instance ๋ฒ„ํŠผ: ์ƒˆ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ชจ๋‹ฌ์„ ์—ฝ๋‹ˆ๋‹ค.

2. ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก ํ‘œ

์ปฌ๋Ÿผ์„ค๋ช…
Label์ธ์Šคํ„ด์Šค ์ด๋ฆ„(์„ค์ •ใ—ใชใ‹ใฃใŸ ๊ฒฝ์šฐ #<diSn>)
Created์ƒ์„ฑ ์ผ์‹œ
Last fetched์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ† ํฐ์œผ๋กœ ๋งˆ์ง€๋ง‰์œผ๋กœ env๋ฅผ ๋ฐ›์•„๊ฐ„ ์‹œ๊ฐ. ์‹ค์‹œ๊ฐ„ ์ƒ์กด ์—ฌ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ "๋งˆ์ง€๋ง‰ ๊ธฐ๋™ ์‹œ๊ฐ"์— ๊ฐ€๊นŒ์›€
StatusActive(์ดˆ๋ก) ๋˜๋Š” Revoked(๋นจ๊ฐ•) ๋ฐฐ์ง€
ActionsRevoke ๋ฒ„ํŠผ โ€” ํ† ํฐ์„ ๋ฌดํšจํ™”(์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฉˆ์ถ”์ง€ ์•Š์Œ)

โš ๏ธ Last fetched๊ฐ€ -์ธ ๊ฒฝ์šฐ: ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„์ง ํ•œ ๋ฒˆ๋„ ๊ธฐ๋™ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ ˆ์ฐจ โ‘ (์ˆ˜๋™) ๋˜๋Š” โ‘ก(Provision now)๋ฅผ ์•„์ง ์‹คํ–‰ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐฉ๋ฒ•

  1. + Create Docker instance ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
  2. ํ•„์ˆ˜ ํ•„๋“œ 3๊ฐœ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • GIIP_LOGIN_ID: GIIP ๋กœ๊ทธ์ธ ๊ณ„์ • (์˜ˆ: user@example.com)
    • GIIP_SK: GIIP ๋น„๋ฐ€ ํ‚ค (๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋‹ค๋ฆ„)
    • GIIP_CSN: CSN ๋ฒˆํ˜ธ (์˜ˆ: 47)
  3. ์„ ํƒ ํ•„๋“œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • Label: ์ธ์Šคํ„ด์Šค ์ด๋ฆ„ (์„ ํƒ, ์˜ˆ: lowy-dp01-docker)
    • GIIP_PROJECT_NAME: ๊ธฐ๋ณธ docker
    • GIIP_WORKDIR: ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ (์„ ํƒ)
    • GIIP_REST_BRANCH: Git ๋ธŒ๋žœ์น˜ (์„ ํƒ)
    • SLACK_BOT_TOKEN / SLACK_APP_TOKEN / SLACK_CHANNEL_ID: Slack ๋ด‡ ํ™œ์„ฑํ™” (์„ ํƒ โ€” ๋‘˜ ๋‹ค ํ•„์š”)
    • Enable hourly-issue-scheduler: ์ฒดํฌ๋ฐ•์Šค (๊ธฐ๋ณธ on) โ€”ๆฏๅฐๆ—ถ :07์— ์ด์Šˆ ์Šค์ผ€์ค„๋Ÿฌ ์‹คํ–‰
  4. Create๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

ํ† ํฐ์€ ๋ฐ˜๋“œ์‹œ ๋ณต์‚ฌํ•˜์„ธ์š”

์ƒ์„ฑ ์งํ›„ ๋”ฑ 1ํšŒ๋งŒ ํ† ํฐ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

GIIP_INSTANCE_TOKEN=<ํ† ํฐ>

๋ชจ๋‹ฌ์„ ๋‹ซ์œผ๋ฉด ๋‹ค์‹œ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋™ํ•˜๋ ค๋ฉด ์ด ํ† ํฐ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ, ๋ฐ˜๋“œ์‹œ ๋ณต์‚ฌํ•œ ๋’ค ์ง„ํ–‰ํ•˜์„ธ์š”.

๐Ÿ› ๏ธ ์ƒ์„ฑ ํ›„ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋™ โ€” ์ ˆ์ฐจ โ‘  (์ˆ˜๋™, ๋ชจ๋“  ํ™˜๊ฒฝ)

ํ† ํฐ์„ ๋ณต์‚ฌํ•œ ๋’ค, ๋Œ€์ƒ PC/์„œ๋ฒ„์—์„œ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

# 1. giip-fde-agent ์ €์žฅ์†Œ๋ฅผ ํด๋ก 
git clone https://github.com/LowyShin/giip-fde-agent.git
cd giip-fde-agent/docker

# 2. .env ํŒŒ์ผ์— ํ† ํฐ๋งŒ ๊ธฐ๋ก
echo 'GIIP_INSTANCE_TOKEN=<๋ณต์‚ฌํ•œ ํ† ํฐ>' > .env

# 3. Docker Compose๋กœ ๊ธฐ๋™
docker compose up -d --build
  • .env์— ํ† ํฐ ํ•œ ์ค„์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” fetch-instance-env.sh๊ฐ€ dockerInstanceFetch API(ํ† ํฐ ์ž์ฒด๊ฐ€ ์ž๊ฒฉ์ฆ๋ช…)๋กœ ์„œ๋ฒ„์—์„œ ์ž๋™ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค.
  • .env์— ์ง์ ‘ ํ‚ค๋ฅผ ์ ์–ด๋‘๋ฉด ๊ทธ ๊ฐ’์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค(๋ถ€๋ถ„ override ๊ฐ€๋Šฅ).

๐Ÿ› ๏ธ ์ƒ์„ฑ ํ›„ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋™ โ€” ์ ˆ์ฐจ โ‘ก (์›๊ฒฉ Provision now)

๋Œ€์ƒ PC์— ์ด๋ฏธ GIIP ์—์ด์ „ํŠธ๊ฐ€ ๋Œ๊ณ  ์žˆ์–ด lssn์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  1. ํ† ํฐ ํ‘œ์‹œ ์˜์—ญ์˜ lssn ์ž…๋ ฅ๋ž€์— ๋Œ€์ƒ PC์˜ lssn์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  2. [Provision now] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
  3. CQE ํ์— ์Šคํฌ๋ฆฝํŠธ(mssn=6122)๊ฐ€ ๋“ฑ๋ก๋˜๊ณ , ์ฆ‰์‹œ ๊ฐ•์ œ ์‹คํ–‰(CQERunForce)๋ฉ๋‹ˆ๋‹ค.

โš ๏ธ ์ด ๋ฒ„ํŠผ์€ GIIP ์—์ด์ „ํŠธ๊ฐ€ ์„ค์น˜๋œ PC์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ PC์— ์—์ด์ „ํŠธ๊ฐ€ ์—†์œผ๋ฉด ์ด ๋ฐฉ๋ฒ•์€ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

โš ๏ธ ์Šคํฌ๋ฆฝํŠธ ์†Œ์œ ๊ถŒ ์ œ์•ฝ: ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์Šคํฌ๋ฆฝํŠธ๋Š” ํŠน์ • ์†Œ์œ ์ž ๊ณ„์ •์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณ„์ •์—์„œ ์ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์‹คํŒจํ•˜์ง€๋งŒ, ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์ž์ฒด๋Š” ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ๊ณ  ํ† ํฐ์€ ๊ทธ๋Œ€๋กœ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ ˆ์ฐจ โ‘ (์ˆ˜๋™)์œผ๋กœ ์ง„ํ–‰ํ•˜์„ธ์š”.

โš ๏ธ ์™„๋ฃŒ๊นŒ์ง€ ์ตœ๋Œ€ 1๋ถ„: ๋Œ€์ƒ PC์˜ GIIP ์—์ด์ „ํŠธ๊ฐ€ ์•ฝ 60์ดˆ๋งˆ๋‹ค ํด๋งํ•˜๋ฏ€๋กœ, ์ตœ๋Œ€ 1๋ถ„ ์ •๋„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ” ์ƒ์„ฑ ํ›„ "์ ‘์†" ํ™•์ธ โ€” 3๊ฐ€์ง€ ๊ฒฝ๋กœ

GIIP ์›น ์•ˆ์—๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•˜๋Š” ํ„ฐ๋ฏธ๋„์ด ์—†์Šต๋‹ˆ๋‹ค. ํ™•์ธ์€ ๋‹ค์Œ 3๊ฐ€์ง€๋กœ ํ•ฉ๋‹ˆ๋‹ค.

1. ์ปจํ…Œ์ด๋„ˆ ์…ธ๋กœ ์ง์ ‘ ์ ‘์† (๋Œ€์ƒ PC์—์„œ)

docker exec -it giip-fde-agent bash

์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์€ giip-fde-agent๋กœ ๊ณ ์ •์ž…๋‹ˆ๋‹ค.

2. ๋กœ๊ทธ ํ™•์ธ (๋Œ€์ƒ PC์—์„œ)

docker compose logs -f          # docker/ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ
docker logs -f giip-fde-agent   # ์–ด๋””์„œ๋“ 

๊ธฐ๋™์ด ์ •์ƒ์ด๋ฉด ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค:

  • [entrypoint] cloned ...
  • [fetch-instance-env] env applied from GIIP_INSTANCE_TOKEN
  • [entrypoint] registered giipAgentLinux cron (every 1 min)
  • [entrypoint] ready. tailing logs.

3. GIIP ์›น์—์„œ ํ™•์ธ โ€” lsvrlist (์„œ๋ฒ„ ๋ชฉ๋ก)

์ด๊ฒƒ์ด "GIIP ์›น์—์„œ ์ ‘์† ํ™•์ธ"ํ•˜๋Š” ์ •๋ณธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋™ ์‹œ:

  1. giipAgentLinux๋ฅผ ํด๋ก ํ•ฉ๋‹ˆ๋‹ค.
  2. giipAgent.cnf (sk=๋“ฑ๋กํ•œ GIIP_SK, lssn="0")๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. 1๋ถ„๋งˆ๋‹ค giipAgent3.sh๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. GIIP๊ฐ€ lssn์„ ์ž๋™ ๋ฐฐ์ •ํ•˜๊ณ , ์ดํ›„ ๊ฐ™์€ lssn์œผ๋กœ ํ•˜ํŠธ๋น„ํŠธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  5. ์ดํ›„ ์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ค๋ฅธ ์„œ๋ฒ„์™€ ๋˜‘๊ฐ™์ด lsvrlist ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์ ‘์† ํ™•์ธ ๊ฒฝ๋กœ: /ko/lsvrlist โ†’ ํ•ด๋‹น lssn ํ–‰ ํด๋ฆญ โ†’ lsvrdetail์—์„œ tLSvr.lsChkdt ํ•˜ํŠธ๋น„ํŠธ๋กœ ์ƒ์กด ํ™•์ธ

โš ๏ธ GIIP_SK๊ฐ€ ์—†๊ฑฐ๋‚˜ GIIP_ENABLE_AGENT=false์ด๋ฉด ์ด ๋“ฑ๋ก์ด ์ผ์–ด๋‚˜์ง€ ์•Š์•„ GIIP ์›น์—์„œ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๋ฅผ ์ „ํ˜€ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

4. Slack์œผ๋กœ ํ™•์ธ (Slack ๋ด‡ ์„ค์ • ์‹œ)

SLACK_BOT_TOKEN๊ณผ SLACK_APP_TOKEN์„ ๋‘˜ ๋‹ค ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ์—๋งŒ slack-bot์ด pm2๋กœ ๊ธฐ๋™๋ฉ๋‹ˆ๋‹ค. ์ง€์ •ํ•œ ์ฑ„๋„์—์„œ ๋ด‡์ด ์‘๋‹ตํ•˜๋ฉด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

โš ๏ธ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์—†์œผ๋ฉด ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค โ€” ํ•˜๋‚˜๋งŒ ๋„ฃ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ์•ˆ ๋œจ๋Š” ๊ฒƒ์€ ์ •์ƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ์ฐธ๊ณ 

  • Last fetched โ‰  ์‹ค์‹œ๊ฐ„ ์ƒ์กด ์—ฌ๋ถ€: Last fetched๋Š” "๋งˆ์ง€๋ง‰์œผ๋กœ env๋ฅผ ๋ฐ›์•„๊ฐ„ ์‹œ๊ฐ"์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊บผ์ ธ๋„ ์ด ๊ฐ’์€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ์ƒํƒœ๋Š” lsvrlist์˜ ํ•˜ํŠธ๋น„ํŠธ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • Revoke๋Š” ํ–‰์„ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: Revoke๋Š” ํ† ํฐ์„ ๋ฌดํšจํ™”ํ•  ๋ฟ ๋ชฉ๋ก ํ–‰์„ ์ง€์šฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ์ด๋ ฅ์ด๋ฏ€๋กœ Revoked ๋ฐฐ์ง€์™€ ํ•จ๊ป˜ ๋‚จ์Šต๋‹ˆ๋‹ค.
  • Revokeํ•ด๋„ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฉˆ์ถ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฉˆ์ถ”๋ ค๋ฉด ๋Œ€์ƒ PC์—์„œ docker compose down์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์€ ํ•ญ์ƒ giip-fde-agent: docker-compose.yml์˜ container_name์œผ๋กœ ๊ณ ์ •์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
ํ† ํฐ์„ ๋ชป ์ ์–ด๋’€๋‹ค์žฌ์กฐํšŒ ๋ถˆ๊ฐ€๊ธฐ์กด ์ธ์Šคํ„ด์Šค๋ฅผ Revokeํ•˜๊ณ  ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์„ธ์š”.
docker compose up์€ ๋๋Š”๋ฐ lsvrlist์— ์•ˆ ๋œฌ๋‹ค(a) GIIP_ENABLE_AGENT=false ์—ฌ๋ถ€ (b) GIIP_SK ๋น„์—ˆ๋Š”์ง€ (c) 1๋ถ„ Polling ์ฃผ๊ธฐ ์ „์ธ์ง€ (d) ์ธ์ฆ ์˜ค๋ฅ˜(401)docker logs์˜ /work/giipAgentLinux/log/cron.log์—์„œ 401 ์˜ค๋ฅ˜ ํ™•์ธ
๋งค ์žฌ๊ธฐ๋™๋งˆ๋‹ค ์ƒˆ lssn์œผ๋กœ ๋“ฑ๋ก๋œ๋‹ค/work ๋ณผ๋ฅจ์ด ์œ ์‹ค๋จdocker-compose.yml์˜ ๋ณผ๋ฅจ์ด giip-fde-agent-data:/work ์ „์ฒด์ธ์ง€ ํ™•์ธ
[Provision now] ์‹คํŒจ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์Šคํฌ๋ฆฝํŠธ ์†Œ์œ ์ž ๊ณ„์ • ๋ถˆ์ผ์น˜์ ˆ์ฐจ โ‘ (์ˆ˜๋™ docker compose up)์œผ๋กœ ์ง„ํ–‰ํ•˜์„ธ์š”.
Slack ๋ด‡์ด ์•ˆ ๋œฌ๋‹คSLACK_BOT_TOKEN๊ณผ SLACK_APP_TOKEN ๋‘˜ ๋‹ค ํ•„์š”ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ๋‘˜ ๋‹ค ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.
์ ‘์† ์ฆ‰์‹œ ํ™ˆ์œผ๋กœ ํŠ•๊น€uLevel์ด 70 ๋ฏธ๋งŒ๊ด€๋ฆฌ์ž ๊ณ„์ •(๋ ˆ๋ฒจ 70+)์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์„ธ์š”.

๋ฒ„์ „: 1.0 ์ตœ์ข… ์ˆ˜์ •: 2026-09-22 (giip #2847) ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/docker-instances.ko.md