## ๐Ÿณ [[Docker]] ๋„คํŠธ์›Œํฌ ํ•ฉ์น˜๊ธฐ๋Š” ๊ท€์ฐฎ๊ณ , ํ˜ธ์ŠคํŠธ ํฌํŠธ๋กœ '๊ธ‰ํ•˜๊ฒŒ' ํ†ต์‹ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ {#sec-f27028c85270} ๋ณดํ†ต ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ํ†ต์‹ ํ•  ๋•Œ๋Š” ๊ณต์šฉ ๋ธŒ๋ฆฟ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ•˜๋‚˜ ํŒŒ์„œ ์„œ๋น„์Šค ์ด๋ฆ„(์˜ˆ: `http://app-b:8080`)์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒŒ ์ •์„์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ด๋‹ค ๋ณด๋ฉด ์ •์„๋Œ€๋กœ ํ•˜๊ธฐ ํž˜๋“  'ํ”ผ์น˜ ๋ชปํ•  ์ƒํ™ฉ'์ด ์ƒ๊ธฐ๊ณค ํ•˜์ฃ . ## ์ด๋Ÿฐ '์–ต์šธํ•œ ์ƒํ™ฉ'์ด๋ผ๋ฉด ์ด ๋ฐฉ๋ฒ•์„ ์“ฐ์„ธ์š” {#sec-3da904d03848} * **ํ˜ธ์ŠคํŠธ์— ์ง์ ‘ ์„ค์น˜๋œ ์„œ๋น„์Šค์™€ ํ†ต์‹ ํ•  ๋•Œ:** DB๋‚˜ Redis๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹ˆ๋ผ ํ˜ธ์ŠคํŠธ OS์— ์ง์ ‘ ์„ค์น˜๋˜์–ด ์žˆ์–ด, ๋„คํŠธ์›Œํฌ๋ฅผ ํ•ฉ์น ๋ž˜์•ผ ํ•ฉ์น  ์ˆ˜๊ฐ€ ์—†์„ ๋•Œ. * **๋‚จ์ด ๋งŒ๋“  ์ปจํ…Œ์ด๋„ˆ๋ผ ๋„คํŠธ์›Œํฌ ์„ค์ •์„ ๊ฑด๋“œ๋ฆฌ๊ธฐ ๋ฌด์„œ์šธ ๋•Œ:** ๋‚ด๊ฐ€ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ ์„ค์ •์— ๋‚ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ•์ œ๋กœ ๋ผ์›Œ ๋„ฃ์—ˆ๋‹ค๊ฐ€ ์žฅ์• ๊ฐ€ ๋‚ ๊นŒ ๋ด ๋‘๋ ค์šธ ๋•Œ. * **๋กœ์ปฌ ๊ฐœ๋ฐœ ์ค‘ '์ž„์‹œ'๋กœ ์—ฐ๊ฒฐ๋งŒ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ:** ๋„คํŠธ์›Œํฌ ์„ค๊ณ„๊ณ  ๋ญ๊ณ , ์ผ๋‹จ ์ง€๊ธˆ ๋‹น์žฅ ํ˜ธ์ŠคํŠธ ํฌํŠธ๋กœ ๋šซ๋ ค ์žˆ๋Š” ์„œ๋น„์Šค์— ์š”์ฒญ์ด ๊ฐ€๋Š”์ง€ ํ™•์ธ๋ถ€ํ„ฐ ํ•ด์•ผ ํ•  ๋•Œ. ์ด๋Ÿด ๋•Œ ์œ ์šฉํ•œ ์น˜ํŠธํ‚ค๊ฐ€ ๋ฐ”๋กœ `host.docker.internal`์ž…๋‹ˆ๋‹ค. ![ํ˜ธ์ŠคํŠธ์ด์šฉ-์ปจํ…Œ์ด๋„ˆ๊ฐ„-ํ†ต์‹ .png](/media/whitedec/blog_img/4e661ed1ddb648529e5b1681c022cd25.webp) --- ## ํ•ด๊ฒฐ์ฑ… : "์ปจํ…Œ์ด๋„ˆ ๋ฐ– ์„ธ์ƒ์„ ๋ณด๋Š” ์ฐฝ" `host.docker.internal` {#sec-979a012d89c8} ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ `127.0.0.1`์„ ์™ธ์ณ๋ด์•ผ ์ž๊ธฐ ์ž์‹ (์ปจํ…Œ์ด๋„ˆ)๋งŒ ๋ณด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ `host.docker.internal`์ด๋ผ๋Š” ํŠน์ˆ˜ ๋„๋ฉ”์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋ฒฝ์„ ๋šซ๊ณ  ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์˜ IP๋ฅผ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. **ํŒŒ์ด์ฌ(DRF) ์ฝ”๋“œ ์˜ˆ์‹œ:** ```python # 'localhost' ๋Œ€์‹  'host.docker.internal'์„ ์จ์„œ ํ˜ธ์ŠคํŠธ ํฌํŠธ๋กœ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค. # App-B๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ 8080 ํฌํŠธ์— ๋ฐ”์ธ๋”ฉ๋˜์–ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. NEXTCLOUD_URL = "http://host.docker.internal:8080" response = requests.get(NEXTCLOUD_URL) ``` --- ## โš ๏ธ [[Linux]] ์œ ์ €๋ผ๋ฉด '์ˆ˜๋™ ์„ค์ •'์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค {#sec-169e1a1f873c} Docker Desktop(Mac/Windows)์€ ์ด๊ฒŒ ๊ธฐ๋ณธ์œผ๋กœ ๋˜์ง€๋งŒ, **์ˆœ์ˆ˜ ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„**์—์„œ๋Š” Docker๊ฐ€ ์ด ๋„๋ฉ”์ธ์„ ์ž๋™์œผ๋กœ ์žก์•„์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๋‚˜ ์‹คํ–‰ ์‹œ "์ด ๋„๋ฉ”์ธ์€ ํ˜ธ์ŠคํŠธ IP๋ฅผ ๋œปํ•ด"๋ผ๊ณ  ๋ช…์‹œํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. **Docker Compose ์„ค์ • ์˜ˆ์‹œ:** ```yaml services: drf-app: image: my-drf-app-image extra_hosts: # host.docker.internal์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํ˜ธ์ŠคํŠธ ๊ฒŒ์ดํŠธ์›จ์ด์— ์ ‘๊ทผํ•˜๊ฒ ๋‹ค๋Š” ์„ ์–ธ - "host.docker.internal:host-gateway" ``` --- ## ์–ธ์ œ๋‚˜ ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค {#sec-bb28e4a13c7f} ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ•์กฐํ•˜์ง€๋งŒ, ์ด ๋ฐฉ์‹์€ **์ตœํ›„์˜ ์ˆ˜๋‹จ**์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. 1. **๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•:** ๊ณต์šฉ ๋ธŒ๋ฆฟ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ํ†ต์‹ ํ•˜๊ธฐ (๋ณด์•ˆ์ƒ ๊ฐ€์žฅ ์•ˆ์ „). 2. **์ด ๋ฐฉ๋ฒ•์„ ์“ฐ๋Š” ์ด์œ :** ํ˜ธ์ŠคํŠธ์— ์ง์ ‘ ๋„์šด ํ”„๋กœ์„ธ์Šค์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ๋ฅผ ๋„์ €ํžˆ ํ•ฉ์น  ์ˆ˜ ์—†๋Š” '๊ณ ๋ฆฝ๋œ' ํ™˜๊ฒฝ์ผ ๋•Œ. ์ž‘๋…„์— ์ ์–ด๋‘” ์ด '๋น„์ƒ๊ตฌ' ์‚ฌ์šฉ๋ฒ•์€ ์ •์„์ด ๋ง‰ํ˜”์„ ๋•Œ ๊บผ๋‚ด ์“ฐ๋Š” ํžˆ๋“  ์นด๋“œ๋กœ๋งŒ ํ™œ์šฉํ•ด ๋ณด์„ธ์š”!