๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ์ ํŠธ/๊ณ ๋ฏผ ์ƒ๋‹ด ํ”Œ๋žซํผ

๋กœ์ปฌ์—์„œ Docker๋ฅผ ํ™œ์šฉํ•œ Prometheus & Grafana ์—ฐ๋™ ๋ฐฉ๋ฒ•

OSํ™˜๊ฒฝ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌ์ถ•์„ ์†Œ๊ฐœํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
Docker-compose, Actuator, ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค, ๊ทธ๋ผํŒŒ๋‚˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์„ค๋ช…๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์„ค๋ช…์€ ํ•˜์ง€ ์•Š๊ณ  ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค & ๊ทธ๋ผํŒŒ๋‚˜ ๋„์ž… ์†Œ๊ฐœ

Jmeter ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์— ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋ ค๊ณ  ๊ณ„ํš์ค‘์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ํ†ฐ์บฃ์˜ ์“ฐ๋ ˆ๋“œ ํ’€์˜ ๋ฌธ์ œ์ธ์ง€, DB ์ปค๋„ฅ์…˜ ํ’€์ด ๋ฌธ์ œ์ธ์ง€, ๋‚ด ๋…ธํŠธ๋ถ CPU ๋ฌธ์ œ์ธ์ง€, ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ๊ณ  ํ•ด๋‹น ๋ฌธ์ œ์— ๋งž๊ฒŒ ํ•ด๊ฒฐ์„ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ ์ง€์›ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ชจ๋“ˆ์ธ Actuator ๋Š” ๋ฉ”ํŠธ๋ฆญ(์ง€ํ‘œ)๋“ค์ด ์ €์žฅ์ด ๋˜์ง€ ์•Š๋Š” ์ ๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„๋ฅผ ์‹ค์ œ ์šด์˜ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค & ๊ทธ๋ผํŒŒ๋‚˜๋ฅผ ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•˜๊ธธ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Docker-compose ๋„์ž… ์†Œ๊ฐœ

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค์™€ ๊ทธ๋ผํŒŒ๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋กœ์ปฌ OS์— ๋งž๋Š” ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์ง„ํ–‰ํ•˜๋ฉด ๋ฐฐํฌํ–ˆ์„ ๋•Œ ์—ญ์‹œ, ๋˜‘๊ฐ™์€ ๊ณผ์ •์„ 2๋ฒˆ ๊ฑฐ์ณ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํฌ ํ›„์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„ ์—ญ์‹œ docker ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฌถ์–ด์„œ ๋„์šธ ์ˆ˜ ์žˆ๋Š” Docker์˜ compose ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

ํ•œ ์ปจํ…Œ์ด๋„ˆ์— ํ•˜๋‚˜์˜ image ๋ฅผ ๋„์šฐ๋Š” docker ํŠน์„ฑ ์ƒ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ Mysql, redis ๋„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋„์›Œ์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋Š” docker-compose ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ์„œ๋ฒ„์— ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์—ฐ๋™ ๊ณผ์ •

1. build.gradle ์— Actuator ์™€ micrometer ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

Boot ๊ฐ€ dependency-management ๋ž€ plug-in ์„ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ค€๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— ๋ฒ„์ „ ๋ช…์‹œ ์—†์ด ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'

2๋ฒˆ ์งธ ์˜์กด์„ฑ์€ ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด๋งˆ๋‹ค ๋ฉ”ํŠธ๋ฆญ์˜ ํฌ๋งท(์–‘์‹)์ด ๋‹ค๋ฅธ๋ฐ, ์ด micrometer ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ํˆด์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”ํŠธ๋ฆญ ํฌ๋งท์— ๋งž์ถฐ ๋ฉ”ํŠธ๋ฆญ์„ ๋ณ€๊ฒฝ์‹œ์ผœ ์ค๋‹ˆ๋‹ค.

micrometer ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค, ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋ฅผ ๊ตฌํ˜„์ฒด๋ผ ์ƒ๊ฐํ•˜์‹œ๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๊ตฌํ˜„์ฒด๋กœ๋Š” ์Šคํ”„๋ง์˜ Actuator ๋“ฑ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. application.yml ์— Spring Actuator ์—”๋“œํฌ์ธํŠธ ์ถ”๊ฐ€

  • Spring Actuator ์˜ ์—”๋“œํฌ์ธํŠธ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ์ถœํ•˜๊ณ  ์‹ถ์€ ์—”๋“œํฌ์ธํŠธ์˜ ๋…ธ์ถœ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ , ์ €๋Š” ๋ชจ๋“  ์—”๋“œ ํฌ์ธํŠธ์˜ ๋…ธ์ถœ์„ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์ €์žฅํ•  ๋ฉ”ํŠธ๋ฆญ๋“ค์€ Spring Actuator ๋ฅผ ํ†ตํ•ด ์ˆ˜์ง‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—”๋“œํฌ์ธํŠธ๋“ค์„ ๋…ธ์ถœํ•ด์ค๋‹ˆ๋‹ค.
  • ์•ก์ธ„์—์ดํ„ฐ์˜ ๋ณด์•ˆ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์•ก์ธ„์—์ดํ„ฐ์˜ ํฌํŠธ๋ฅผ 8080ํฌํŠธ ์—์„œ 9292ํฌํŠธ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. 
    • AWS ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐํฌํ–ˆ์„ ๋•Œ๋ฅผ ๊ณ ๋ ค, EC2์˜ ์ธ๋ฐ”์šด๋“œ์— 9292ํฌํŠธ๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. 
  • ์ €๋Š” ๋ชจ๋“  ์—”๋“œํฌ์ธํŠธ๊ฐ€ HTTP ๋ฅผ ์ด์šฉํ•œ ์›น์— ๋…ธ์ถœ๋˜๊ธธ ์›ํ–ˆ๊ณ , ํ†ฐ์บฃ ์“ฐ๋ ˆ๋“œ ํ’€์˜ ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ ์ˆ˜, ์‚ฌ์šฉ ์“ฐ๋ ˆ๋“œ ์ˆ˜๋„ ๋ณด๊ธฐ ์œ„ํ•ด #ํ†ฐ์บฃ ๊ด€๋ จ ๋ฉ”ํŠธ๋ฆญ์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
management:
  endpoints:
    web:
      exposure:
        include: "*"
  # ์•ก์ธ„์—์ดํ„ฐ ํฌํŠธ ๋ณ€๊ฒฝ      
  server:
    port: 9292

# ํ†ฐ์บฃ ๊ด€๋ จ ๋ฉ”ํŠธ๋ฆญ
server:
  tomcat:
    mbeanregistry:
      enabled: true

 

3. prometheus.yml ์„ ์ž‘์„ฑ

์–ด๋–ค IP ์™€ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•ด์•ผ ํ• ์ง€ prometheus.yml ์„ ํ†ตํ•ด ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์„œ๋ฒ„์—๊ฒŒ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

์ €์˜ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” Docker ํŒŒ์ผ๋“ค๊ณผ Git ํŒŒ์ผ, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŒŒ์ผ๋“ค์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์— monitoring ์ด๋ผ๋Š” customํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด yml ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.(/monitoring/prometheus.yml)

 

๋งŒ์•ฝ ์ €์ฒ˜๋Ÿผ, prometheus.yml ํŒŒ์ผ ์œ„์น˜๋ฅผ custom ํ•˜๊ฒŒ ํ•  ๊ฒฝ์šฐ, docker-compose.yml ์ž‘์„ฑ ์‹œ prometheus.yml ํŒŒ์ผ ์œ„์น˜๋ฅผ ๋ช…์‹œ ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ , ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ yml ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

14๋ผ์ธ์ด์ „์˜ ๋‚ด์šฉ์€ ๋กœ์ปฌ์— ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋ฅผ ์„ค์น˜ํ–ˆ์„ ๋•Œ์˜ prometheus.yml ์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

global:
  scrape_interval: 15s
  evaluation_interval: 15s
  
alerting:
  alertmanagers:
    - static_configs:
        - targets:

rule_files:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]    << 14๋ผ์ธ

  - job_name: "spring-actuator"          // ์ˆ˜์ง‘ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ ์ž„์˜์˜ ์ด๋ฆ„
    metrics_path: '/actuator/prometheus' // ์ˆ˜์ง‘ํ•  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •
    scrape_interval: 1m                  // ์ˆ˜์ง‘ํ•  ์ฃผ๊ธฐ๋ฅผ ์„ค์ • 1m์€ 1๋ถ„, 1s๋Š” 1์ดˆ
    static_configs:                      
      - targets: ['host.docker.internal:9292']      // ์ˆ˜์ง‘ํ•  ์„œ๋ฒ„์˜ IP, PORT ๋ฅผ ์ง€์ •, application.yml ์— ํฌํŠธ๋ฅผ 9292๋กœ ์ง€์ •ํ–ˆ์Œ
  • -job name:
    • Spring Actuator ๋„ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ๊ด€๋ จ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ด ๋ฉ”ํŠธ๋ฆญ์„ /actuator/prometheus ๊ฒฝ๋กœ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ์ด ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋ฉ”ํŠธ๋ฆญ์„ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ์ˆ˜์ง‘ํ•˜๋ฉฐ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค์˜ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • targets:
    • ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๋ฅผ docker ๋กœ ๋„์› ์„ ๋•Œ, ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ์™€ docker ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ์ด ๋•Œ, ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋กœ์ปฌํ˜ธ์ŠคํŠธ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ์˜ ๋„๋ฉ”์ธ์„ localhost ๊ฐ€ ์•„๋‹Œ host.docker.internal ๋กœ ํ•ด์ฃผ์–ด์•ผ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋กœ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

4. docker-compose.yml ์ž‘์„ฑ

  • volumes:
    • prometheus.yml ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์˜ /etc/prometheus/prometheus.yml ์— ๋งˆ์šดํŠธ๋ฅผ ํ•ด์„œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
  • ports: 
    • ํฌํŠธ ํฌ์›Œ๋”ฉ์€ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค์˜ ๊ธฐ๋ณธ ํฌํŠธ์ธ 9090์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
services:
  airdnb-prometheus:
    image: prom/prometheus
    volumes:
      - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml  # ./monitoring/prometheus.yml ์€ prometheus.yml ํŒŒ์ผ์˜ ๊ฒฝ๋กœ ์ง€์ •
    ports:
      - 9090:9090

 

5. ์‹คํ–‰

  • docker compose up -d ๋ช…๋ น์–ด๋ฅผ ์น˜๊ฑฐ๋‚˜ docker-compose.yml ์˜ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
  • localhost:9090 ์— ์ ‘์†ํ•˜์—ฌ Status ๋ชฉ๋ก์˜ Targets ๋ž€์—์„œ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค๊ฐ€ ๋ถ€ํŠธ์™€ ์ž˜ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • localhost:9292/actuator ์— ์ ‘์†ํ•˜์—ฌ Actuator์˜ ๋ฉ”ํŠธ๋ฆญ๋“ค์„ HTTP๋กœ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 

 

์„ฑ๊ณต ํ™”๋ฉด

 

ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค์— ๊ทธ๋ผํŒŒ๋‚˜ ์—ฐ๋™ ๊ณผ์ •

1. docker-compose.yml ์— ๊ทธ๋ผํŒŒ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ์ถ”๊ฐ€

ymlํŒŒ์ผ์— image ์™€ port ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ผํŒŒ๋‚˜์˜ ๊ธฐ๋ณธ ํฌํŠธ๋Š” 3000 ์ž…๋‹ˆ๋‹ค.

services:
  airdnb-local-prometheus:
    image: prom/prometheus
    volumes:
      - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - 9090:9090
  
  # ์ถ”๊ฐ€
  airdnb-local-grafana:
    image: grafana/grafana
    ports:
      - 3000:3000

 

2. ๊ทธ๋ผํŒŒ๋‚˜์— ํ”„๋กœํ…Œ๋ฉ”์šฐ์Šค DataSource ์ถ”๊ฐ€ํ•˜๊ธฐ

  • localhost:3000 ์„ ์ž…๋ ฅํ•ด์„œ ๊ทธ๋ผํŒŒ๋‚˜์— ์ ‘์†
  • ID : admin , PW : admin ์œผ๋กœ ๊ทธ๋ผํŒŒ๋‚˜์— ๋กœ๊ทธ์ธ
  • Home > Connections > Data sources > prometheus ์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
  • ์•„๋ž˜ ์‚ฌ์ง„์˜ Connection ์—๋„ http://localhost:9090 ์ด ์•„๋‹Œ http://host.docker.internal:9090 ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.(์‚ฌ์ง„ 4)
    • ๊ทธ๋ผํŒŒ๋‚˜๋„ ๋„์ปค๋กœ ๋„์› ๊ธฐ ๋•Œ๋ฌธ์— ๋„์ปค ๋‚ด๋ถ€์—์„œ host ๋กœ 9090 ํฌํŠธ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด host 9090 ํฌํŠธ์— ์—ฐ๊ฒฐ๋œ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค์—๊ฒŒ ์—ฐ๊ฒฐ์ด ๋„์ฐฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.(์‚ฌ์ง„ 5)

์‚ฌ์ง„ 4. ๊ทธ๋ผํŒŒ๋‚˜์— ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์—ฐ๋™
์‚ฌ์ง„ 5. http://host.docker.internal:9090 ์š”์ฒญ ์‹œ ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ, ** ์‚ฌ์ง„์—์„œ 1๋ฒˆ ๊ฒฝ๋กœ์˜ host 9000ํฌํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ 9090ํฌํŠธ์ž…๋‹ˆ๋‹ค.

 

host.docker.internal ๋ฅผ ์‚ฌ์šฉํ•ด์„œ localhost๋กœ ๋งคํ•‘๋˜๋Š”๊ฑด windows ๋˜๋Š” mac์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  linux์—์„œ๋Š” ๋„์ปค ๋ฒ„์ „ Docker-for-Linux 20.10.0+ ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

* ์ฐธ๊ณ 

From inside of a Docker container, how do I connect to the localhost of the machine?

How to reach localhost on host from docker container?