๊ธฐํ˜ธ๋กœ ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ ์‹ค์‹œ๊ฐ„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฒ•

์ด๋ฏธ์ง€
ํด๋กœ๋“œ ์ฝ”๋“œ์—์„œ ๊ธฐํ˜ธ๋กœ ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ• (2026๋…„ ๊ธฐ์ค€) ํด๋กœ๋“œ ์ฝ”๋“œ ์“ฐ๋‹ค ๋ณด๋ฉด ์ด๋Ÿฐ ๋‹ต๋‹ตํ•œ ์ˆœ๊ฐ„์ด ๊ผญ ์˜ต๋‹ˆ๋‹ค. “๋‚ด๊ฐ€ ์ง€๊ธˆ ์–ด๋–ค ํ”„๋กœ์ ํŠธ์ธ์ง€ ์•Œ๊ณ  ๋งํ•˜๋Š” ๊ฑฐ ๋งž์ง€?” ๋ถ„๋ช… ๊ฐ™์€ ์งˆ๋ฌธ์ธ๋ฐ ์–ด์ œ์™€ ์˜ค๋Š˜ ๋‹ต์ด ๋‹ฌ๋ผ์ง€๊ณ , ๋งฅ๋ฝ์„ ๋‹ค์‹œ ์„ค๋ช…ํ•˜๋А๋ผ ์‹œ๊ฐ„๋งŒ ๊ฐ‘๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ํ•ต์‹ฌ์ด ๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ ์‹ค์‹œ๊ฐ„ ์ถ”๊ฐ€ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํด๋กœ๋“œ ์ฝ”๋“œ์—์„œ ๊ธฐํ˜ธ๋ฅผ ํ™œ์šฉํ•ด ํ”„๋กœ์ ํŠธ ๋งฅ๋ฝ์„ ์ฆ‰์‹œ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ• ์„ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ์ •๋ฆฌํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋ชฉ์ฐจ ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ๊ฐ€ ์™œ ์ค‘์š”ํ•œ๊ฐ€ ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐํ˜ธ ์ •๋ฆฌ @ ๊ธฐํ˜ธ๋กœ ์ปจํ…์ŠคํŠธ๋ฅผ ์ฆ‰์‹œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฒ• ์‹ค์‹œ๊ฐ„ ์ปจํ…์ŠคํŠธ ์ถ”๊ฐ€ ์‹ค์ „ ์˜ˆ์‹œ ์ปจํ…์ŠคํŠธ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ์š”๋ น ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ๊ฐ€ ์™œ ์ค‘์š”ํ•œ๊ฐ€ AI๋Š” ๋˜‘๋˜‘ํ•˜์ง€๋งŒ ์•„๋ฌด ๋งฅ๋ฝ ์—†์ด ์ผํ•˜์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ “๋ฆฌํŒฉํ„ฐ๋ง”์ด๋ผ๋Š” ๋ง๋„ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทœ๋ชจ, ์‚ฌ์šฉ ๊ธฐ์ˆ , ํŒ€ ๊ทœ์น™์„ ๋ชจ๋ฅด๋ฉด ๋‹ต๋ณ€์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ถ”์ƒ์ ์œผ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐํ˜ธ๋กœ ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๊ธฐ์ค€ ์œผ๋กœ ๋ชจ๋“  ์„ค๋ช…์ด ์žฌ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ์ฐจ์ด๋Š” ์ž‘์—…์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก ํ›จ์”ฌ ํฌ๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐํ˜ธ ์ •๋ฆฌ ํด๋กœ๋“œ ์ฝ”๋“œ์—์„œ ์ปจํ…์ŠคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•ต์‹ฌ ๊ธฐํ˜ธ๋Š” ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด @ ๊ธฐํ˜ธ ์ž…๋‹ˆ๋‹ค. @๋Š” “์ด ํŒŒ์ผ ๋˜๋Š” ์ด ์ •๋ณด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ๊ฐํ•ด๋ผ”๋ผ๋Š” ๋ช…ํ™•ํ•œ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ๋ฟ ์•„๋‹ˆ๋ผ ์„ค๋ช… ๋ฌธ์žฅ, ์—ญํ•  ์ง€์ •๊ณผ ํ•จ๊ป˜ ์“ฐ๋ฉด ์ปจํ…์ŠคํŠธ ํšจ๊ณผ๊ฐ€ ๋ฐฐ๋กœ ์ปค์ง‘๋‹ˆ๋‹ค. ๊ธฐํ˜ธ๋Š” AI์—๊ฒŒ ์ฃผ๋Š” ํ‘œ์ง€ํŒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. @ ๊ธฐํ˜ธ๋กœ ์ปจํ…์ŠคํŠธ๋ฅผ ์ฆ‰์‹œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฒ• ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹์€ ํŒŒ์ผ์„ ์ง์ ‘ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. @src/Layout.tsx ์ด ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด ๊ตฌ์กฐ ๊ธฐ์ค€...

Docker ํ™˜๊ฒฝ์—์„œ Claude Code ์ปจํ…Œ์ด๋„ˆ ์„ค์น˜ ๊ฐ€์ด๋“œ

Docker ํ™˜๊ฒฝ์—์„œ Claude Code ์ปจํ…Œ์ด๋„ˆ ์„ค์น˜ ๊ฐ€์ด๋“œ
๋กœ์ปฌ·์„œ๋ฒ„·CI๊นŒ์ง€ ์ดํ•ด๋˜๋Š” ์™„์ „ ์ •์„ (2026 ์ตœ์‹ )

Claude Code๋ฅผ ์“ฐ๋‹ค ๋ณด๋ฉด
์–ธ์  ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ด ์งˆ๋ฌธ์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

“์ด๊ฑฐ Docker ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์“ธ ์ˆ˜ ์žˆ๋‚˜?”
“์„œ๋ฒ„๋‚˜ CI ํ™˜๊ฒฝ์—์„œ๋„ ๋Œ์•„๊ฐ€๊ฒŒ ํ•˜๊ณ  ์‹ถ์€๋ฐ…”

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด
๊ฐ€๋Šฅ์€ ํ•˜์ง€๋งŒ, ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ํ•˜๋ฉด 100% ๋ง‰ํž™๋‹ˆ๋‹ค.

์ด ๊ธ€์€
์™œ Docker์—์„œ Claude Code๊ฐ€ ๊นŒ๋‹ค๋กœ์šด์ง€
์–ด๋””๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๊ณ  ์–ด๋””์„œ ๋ง‰ํžˆ๋Š”์ง€๋ฅผ
ํ˜„์‹ค ๊ธฐ์ค€์œผ๋กœ ์ •๋ฆฌํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.


๐Ÿ“Œ ๋ชฉ์ฐจ (๋ˆ„๋ฅด๋ฉด ์ด๋™)


1️⃣ Docker์—์„œ Claude Code๊ฐ€ ์–ด๋ ค์šด ์ด์œ 

Claude Code๋Š” ๋‹จ์ˆœํ•œ CLI๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

✔ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ์ ‘๊ทผ
✔ ํ„ฐ๋ฏธ๋„ ์ƒํ˜ธ์ž‘์šฉ
✔ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ์ธ์ฆ

์ด ์ค‘์—์„œ
Docker์™€ ๊ฐ€์žฅ ์ถฉ๋Œํ•˜๋Š” ์š”์†Œ๋Š”
๋ฐ”๋กœ ๋ธŒ๋ผ์šฐ์ € ์ธ์ฆ์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ์—๋Š”
๊ธฐ๋ณธ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—†๊ณ 
์™ธ๋ถ€ ์ธ์ฆ ํ๋ฆ„๋„ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Docker์—์„œ Claude Code๋Š”
๋กœ์ปฌ ๊ฐœ๋ฐœ์šฉ / ๋ณด์กฐ ๋ถ„์„์šฉ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


2️⃣ ๊ฐ€๋Šฅํ•œ Docker ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

ํ˜„์‹ค์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ์ž…๋‹ˆ๋‹ค.

✔ ๋กœ์ปฌ ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ
→ ์†Œ์Šค ๋ถ„์„, ์ฝ”๋“œ ์ดํ•ด, ๋ฆฌํŒฉํ„ฐ๋ง ๋ณด์กฐ

✔ ์„œ๋ฒ„ ์ ‘์†์šฉ ์ปจํ…Œ์ด๋„ˆ
→ SSH ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ ๊ฒ€ํ† 

❌ ์™„์ „ ์ž๋™ CI
→ ๋กœ๊ทธ์ธ/์ธ์ฆ ๋•Œ๋ฌธ์— ๋น„๊ถŒ์žฅ

์ฆ‰, Docker์—์„œ๋Š”
“์‚ฌ๋žŒ์ด ์ง์ ‘ ์“ฐ๋Š” AI ๋„๊ตฌ”๋ผ๋Š” ์ „์ œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


3️⃣ Dockerfile ๊ธฐ๋ณธ ๊ตฌ์กฐ

Claude Code๋Š” Node.js 18+๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋Š”
๊ณต์‹ node ์ด๋ฏธ์ง€๊ฐ€ ์ •์„์ž…๋‹ˆ๋‹ค.

FROM node:18-bullseye

WORKDIR /app

RUN npm install -g @anthropic-ai/claude-code

CMD ["/bin/bash"]

์ด ๊ตฌ์กฐ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š”
๋ถˆํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ 
Claude Code ์‹คํ–‰์—๋งŒ ์ง‘์ค‘ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.


4️⃣ Claude Code ์ปจํ…Œ์ด๋„ˆ ์„ค์น˜ ์‹ค์ „

1️⃣ ์ด๋ฏธ์ง€ ๋นŒ๋“œ

docker build -t claude-code .

2️⃣ ํ”„๋กœ์ ํŠธ ํด๋” ๋งˆ์šดํŠธ ํ›„ ์‹คํ–‰

docker run -it \
-v $(pwd):/app \
claude-code

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด
๋กœ์ปฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ

claude

๋ฅผ ์‹คํ–‰ํ•˜๋ฉด
Claude Code๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.


5️⃣ ์ธ์ฆ(Anthropic ๋กœ๊ทธ์ธ) ์ฒ˜๋ฆฌ ์ „๋žต

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ
๋ธŒ๋ผ์šฐ์ € ์ธ์ฆ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ˜„์‹ค์ ์ธ ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

① ๋กœ์ปฌ์—์„œ ๋จผ์ € ๋กœ๊ทธ์ธ
→ ์ธ์ฆ ํ† ํฐ ์ƒ์„ฑ

② ์ธ์ฆ ์ •๋ณด ๋ณผ๋ฅจ ๋งˆ์šดํŠธ
→ ์ปจํ…Œ์ด๋„ˆ์— ์ „๋‹ฌ

์˜ˆ์‹œ

-v ~/.config:/root/.config

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด
๋กœ์ปฌ์—์„œ ์ด๋ฏธ ์ธ์ฆ๋œ Claude Code ์ •๋ณด๋ฅผ
์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


6️⃣ Docker์—์„œ ์ž์ฃผ ํ„ฐ์ง€๋Š” ๋ฌธ์ œ

์‹ค์ œ ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜์˜ค๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

❌ claude ์‹คํ–‰ ์‹œ ๋กœ๊ทธ์ธ ๋ฃจํ”„
→ ์ธ์ฆ ๋ณผ๋ฅจ ๋ฏธ๋งˆ์šดํŠธ

❌ ํŒŒ์ผ ์ ‘๊ทผ ๊ถŒํ•œ ์˜ค๋ฅ˜
→ UID/GID ๋ถˆ์ผ์น˜

❌ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ ์‹œ ์„ค์ • ๋‚ ์•„๊ฐ
→ ๋ณผ๋ฅจ ๋ฏธ์‚ฌ์šฉ

Docker์—์„œ๋Š”
“ํœ˜๋ฐœ์„ฑ ํ™˜๊ฒฝ”์„ ํ•ญ์ƒ ์—ผ๋‘์— ๋‘ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ

Claude Code๋Š”
Docker์™€ ๊ถํ•ฉ์ด ๋‚˜์œ ๋„๊ตฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‹ค๋งŒ,
๋ธŒ๋ผ์šฐ์ € ์ธ์ฆ์ด๋ผ๋Š” ์ธ๊ฐ„์šฉ ์ ˆ์ฐจ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
์™„์ „ ์ž๋™ํ™”๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ๋กœ๊ทธ์ธ → ์ธ์ฆ ๊ณต์œ  → ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

์ด ํ๋ฆ„๋งŒ ์ง€ํ‚ค๋ฉด
Docker ํ™˜๊ฒฝ์—์„œ๋„ Claude Code๋Š”
์ถฉ๋ถ„ํžˆ ๊ฐ•๋ ฅํ•œ ๋ถ„์„ ๋„๊ตฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š”
Claude Code + Docker + VSCode Dev Container
์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์“ฐ๋Š” ์‹ค์ „ ๊ตฌ์„ฑ์„
์ •๋ฆฌํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

์ฉ์ด ์ €์ ˆ๋กœ ๋ฒŒ๋ฆฌ๋Š” ํด๋กœ๋“œ ์ฝ”๋“œ China ์‹œ์žฅ ํŠธ๋ Œ๋“œ ์Šคํฌ๋ž˜ํ•‘ ์Šคํฌ๋ฆฝํŠธ ํ•˜๋Š” ๋ฐฉ๋ฒ•

terminal-setup ํŒŒ์ผ๋กœ ํด๋กœ๋“œ ์ฝ”๋“œ ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ๋ฒ•

@package.json ๋ถ„์„ ํด๋กœ๋“œ ์ฝ”๋“œ ์˜์กด์„ฑ ์ •๋ฆฌ ๋ช…๋ น์–ด