728x90
λ°˜μ‘ν˜•

8μž₯ ν—¬μŠ€ 체크와 λ””νŽœλ˜μ‹œ 체크둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‹ λ’°μ„± ν™•λ³΄ν•˜κΈ°

  • 도컀 μŠ€μ›œμ΄λ‚˜ μΏ λ²„λ„€ν‹°μŠ€μ˜ 경우 μ»¨ν…Œμ΄λ„ˆ ν”Œλž«νΌμƒμ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 슀슀둜 μ΄μƒμ—μ„œ νšŒλ³΅ν•  수 μžˆλ„λ‘ ν•΄ μ£ΌλŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
  • 이미지에 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœκ°€ 정상인지 확인할 수 μžˆλŠ” 정보λ₯Ό ν•¨κ»˜ νŒ¨ν‚€μ§•ν•œλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•ŠμœΌλ©΄, ν”Œλž«νΌμ΄ 비정상 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚­μ œν•˜κ³  μƒˆ μ»¨ν…Œμ΄λ„ˆλ‘œ κ΅μ²΄ν•œλ‹€.

8.1 ν—¬μŠ€ 체크λ₯Ό μ§€μ›ν•˜λŠ” 도컀 이미지

  • μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰μ‹œν‚€λ©΄ λ‚΄λΆ€μ—μ„œ νŠΉμ • ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λœλ‹€.
  • κ·ΈλŸ¬λ‚˜, ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€κ°€ 싀행쀑이라고 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 정상적인 μƒνƒœλΌλŠ” λœ»μ€ μ•„λ‹ˆλ‹€.
  • λ„μ»€λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœκ°€ 정상인지 확인할 수 μžˆλŠ” 정보λ₯Ό 도컀 이미지에 넣을 수 μžˆλ‹€.
$ docker container run -d -p 8080:80 diamol/ch08-numbers-api

# APIλ₯Ό μ„Έ 번 호좜
$ curl 
71

$ curl 
55

$ curl 
9

# λ„€ λ²ˆμ§ΈλΆ€ν„° API 호좜 μ‹€νŒ¨.
$ curl 
{"type":"<https://tools.ietf.org/html/rfc7231#section-6.6.1","title":"An> error occured while processing your request.","status":500,"traceId":"|7cf3120a-44d7eeec8760b32c."}%

$ docker container ls
  • λ„€λ²ˆμ§Έ λΆ€ν„° 500 μ„œλ²„μ—λŸ¬λ₯Ό λ°˜ν™˜ν•˜μ§€λ§Œ, μ»¨ν…Œμ΄λ„ˆ μƒνƒœλŠ” μ—¬μ „νžˆ up 으둜 λ‚˜μ˜¨λ‹€.
  • 도컀 μž…μž₯μ—μ„œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄λΆ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœκ°€ 정상인지 μ•Œ 수 μžˆλŠ” 방법이 μ—†λ‹€.

HEALTHCHECK μΈμŠ€νŠΈλŸ­μ…˜

  • λ„μ»€λŠ” μΌμ •ν•œ μ‹œκ°„ κ°„κ²©μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆ μ•ˆμ—μ„œ HEALTHCHECK μΈμŠ€νŠΈλŸ­μ…˜μ— μ •μ˜λœ λͺ…령을 μ‹€ν–‰ ν•¨μœΌλ‘œμ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœκ°€ 정상인지 확인할 수 μžˆλ‹€.
FROM diamol/dotnet-aspnet

ENTRYPOINT ["dotnet", "/app/Numbers.Api.dll"]
HEALTHCHECK CMD curl --fail <http://localhost/health>

WORKDIR /app
COPY --from=builder /out/ .
  • -f, --fail μ˜΅μ…˜μ„ 톡해 μ‹€νŒ¨ 응닡을 도컀에 전달 ν•  수 μžˆλ‹€.
  • --interval=DURATION (default: 30s)
    • μš”μ²­ λ°˜λ³΅μ‹œκ°„
  • --timeout=DURATION (default: 30s)
    • μš”μ²­μ˜ 응닡 νƒ€μž„μ•„μ›ƒ μ‹œκ°„
  • --start-period=DURATION (default: 0s)
    • μ»¨ν…Œμ΄λ„ˆ μ‹œμž‘ ν›„ μƒνƒœ 확인 λŒ€κΈ° μ‹œκ°„.
  • --retires=N (default: 3)
    • N 번 μ‹€νŒ¨μ‹œ unhealth μƒνƒœ λ³€κ²½.
$ cd /ch08/exercises/numbers/numbers-api

$ docker image build -t diamol/ch08-numbers-api:v2 -f ./Dockerfile.v2 . 

$ doker ps

$ curl localhost:8081/rng
$ curl localhost:8081/rng
$ curl localhost:8081/rng

curl localhost:8081/rng
{"type":"<https://tools.ietf.org/html/rfc7231#section-6.6.1","title":"An> error occured while processing your request.","status":500,"traceId":"|609d0306-4c47a4871ee78355."}

$ docker ps

CONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS                     PORTS                    NAMES
4d1d67dc1cd9   diamol/ch08-numbers-api:v2   "dotnet /app/Numbers…"   2 minutes ago    Up 2 minutes (unhealthy)   0.0.0.0:8081->80/tcp     xenodochial_lehmann
  • μ—λŸ¬κ°€ λ°œμƒν•œ ν›„ μ»¨ν…Œμ΄λ„ˆμ˜ μƒνƒœ unhealth 확인.
  • μ»¨ν…Œμ΄λ„ˆ 이상 μƒνƒœλŠ” 도컀 APIλ₯Ό 톡해 λ³΄κ³ λœλ‹€.
  • μ»¨ν…Œμ΄λ„ˆ ν”Œλž«νΌλ„ μ»¨ν…Œμ΄λ„ˆμ˜ 이상 μƒνƒœλ₯Ό 보고 λ°›μ•„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 볡ꡬ 쑰치λ₯Ό ν•  수 μžˆλ‹€.
$ docker container inspect $(docker container ls --last 1 --format '{{.ID}}'
  • docker inspect λ₯Ό 톡해 κ°€μž₯ 졜근의 ν—¬μŠ€ 체크 μˆ˜ν–‰ κ²°κ³Όλ₯Ό 확인할 수 μžˆλ‹€.

8.2 λ””νŽœλ˜μ‹œ 체크가 적용된 μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ν•˜κΈ°

  • μ—¬λŸ¬ μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰ λ˜λŠ” λΆ„μ‚° μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 경우. 이상이 생긴 μ»¨ν…Œμ΄λ„ˆ ꡐ체 μž‘μ—… μ‹œ μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ μ˜μ‘΄μ„±μ€ κ³ λ €λ˜μ§€ μ•ŠλŠ”λ‹€.
  • λ”°λΌμ„œ, λ””νŽœλ˜μ‹œ 체크λ₯Ό 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ μ „ ν•„μš”ν•œ μš”κ΅¬ 사항을 ν™•μΈν•˜λ„λ‘ ν•œλ‹€.
  • λ””νŽœλ˜μ‹œ μ²΄ν¬λŠ” λ³„λ„μ˜ μΈμŠ€νŠΈλŸ­μ…˜μ΄ μ•„λ‹Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ λͺ…령에 λ‘œμ§μ„ μΆ”κ°€ν•˜λŠ” λ°©λ²•μœΌλ‘œ κ΅¬ν˜„ν•œλ‹€.
FROM diamol/dotnet-aspnet

ENV RngApi:Url=http://numbers-api/rng

CMD curl --fail <http://numbers-api/rng> && \\
		dotnet Numbers.Web.dll
		
WORKDIR /app
COPY --from=builder /out/ .
  • CMD μΈμŠ€νŠΈλŸ­μ…˜μ€ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•  λ•Œ μ‹€ν–‰λœλ‹€.
  • && 은 μ•žμ— μ˜€λŠ” λͺ…령이 μ„±κ³΅ν•˜λ©΄ 뒀에 μ˜€λŠ” λͺ…령을 μ‹€ν–‰ν•œλ‹€.
  • && λͺ…λ Ή μ•žμ˜ 선행쑰건을 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ 쑰건을 κ΅¬ν˜„ν•œλ‹€.
  • 쑰건에 μ‹€νŒ¨ν•  경우 μ»¨ν…Œμ΄λ„ˆλŠ” κ·ΈλŒ€λ‘œ μ’…λ£Œλœλ‹€.

8.3 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 체크λ₯Ό μœ„ν•œ μ»€μŠ€ν…€ μœ ν‹Έλ¦¬ν‹° λ§Œλ“€κΈ°

  • μ‹€λ¬΄μ—μ„œλŠ” λ³΄μ•ˆ μ •μ±…μƒμ˜ 이유둜 이미지에 curl 을 ν¬ν•¨μ‹œν‚¬ 수 μ—†κΈ° λ•Œλ¬Έμ— curl 을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

curl 을 이미지에 ν¬ν•¨μ‹œν‚€μ§€ μ•ŠλŠ” μ΄μœ μ™€ 문제점

νšŒμ‚¬μ—μ„œ docker-compose λ‚΄λΆ€μ—μ„œ healthcheck λ₯Ό 많이 μ‚¬μš©ν•˜λŠ” 것을 λ³΄μ•˜λ‹€.

그런데, μœ„μ˜ μ € λ‚΄μš©μ„ 보고 β€˜μ™œ λ³΄μ•ˆμƒ λ¬Έμ œκ°€ 될까?’에 λŒ€ν•œ μΆ”κ°€ 정리이닀.

  • λ³΄μ•ˆ
    • curl 은 λ„€νŠΈμ›Œν¬ μš”μ²­μ„ λ³΄λ‚΄λŠ” λ„κ΅¬λ‘œ, 잘λͺ»λœ μ‚¬μš© μ‹œ λ³΄μ•ˆ 취약점 λ…ΈμΆœ κ°€λŠ₯.
    • 특히, HEALTHCHECK λŠ” μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ—, κ³΅κ²©μžκ°€ 이λ₯Ό μ•…μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆ 데이터 유좜 ν˜Ήμ€ 곡격 κ°€λŠ₯.
  • μ•ˆμ •μ„±
    • curl 을 μ΄μš©ν•œ HEALTHCHECK λŠ” λ„€νŠΈμ›Œν¬ μƒνƒœ, 타 μ„œλΉ„μŠ€μ˜ 응닡 속도 λ“± μ™ΈλΆ€ μš”μΈμ— 영ν–₯을 λ°›κΈ° 쉬움.
    • 이둜 인해 μ„œλΉ„μŠ€κ°€ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜κ³  μžˆμŒμ—λ„ HEALTHCHECK κ°€ μ‹€νŒ¨ν•  수 있음.
  • μ΄λ―Έμ§€μ˜ 크기
    • curl 은 μ΄λ―Έμ§€μ˜ 크기λ₯Ό λΆˆν•„μš”ν•˜κ²Œ μ¦κ°€μ‹œν‚¨λ‹€.
    • 특히, μ—¬λŸ¬ 레이러λ₯Ό μ‚¬μš©ν•˜λŠ” λ³΅μž‘ν•œ μ΄λ―Έμ§€μ˜ 경우 λ¬Έμ œκ°€ μžˆμ„ 수 μžˆλ‹€.
    • λ˜ν•œ, λͺ¨λ“  이미지에 curl 이 λ°˜λ“œμ‹œ ν•„μš”ν•œ 것은 μ•„λ‹ˆλ―€λ‘œ λΆˆν•„μš”ν•œ μžμ› λ‚­λΉ„.

μ»€μŠ€ν…€ μœ ν‹Έλ¦¬ν‹°μ˜ μž₯점

  • μ»€μŠ€ν…€ μœ ν‹Έλ¦¬ν‹°λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 같은 μ–Έμ–΄λ‘œ κ΅¬ν˜„ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 체크 도ꡬ.

A. μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ 이미지에 좔가적인 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό ν¬ν•¨μ‹œν‚¬ ν•„μš”κ°€ μ—†λ‹€.

B. μ‰˜ 슀크립트둜 ν‘œν˜„ν•˜κΈ° κΉŒλ‹€λ‘œμš΄ λ³΅μž‘ν•œ λ‘œμ§μ„ μ‚¬μš©ν•  수 μžˆλ‹€.

C. μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 같은 섀정을 μ‚¬μš©ν•΄. 반볡 μ •μ˜ μ‚¬μš©λ° μˆ˜μ • λˆ„λ½ 등을 방지할 수 μžˆλ‹€.

D. μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λ™μΌν•œ ν™˜κ²½μ—μ„œμ˜ μ‹€ν–‰ μ „ 확인이 ν•„μš”ν•œ λͺ¨λ“  사항을 검증할 수 μžˆλ‹€.

FROM diamol/dotnet-aspnet

ENTRYPOINT ["dotnet", "Numbers.Api.dll"]
HEALTHCHECK CMD ["dotnet", "Utilities.HttpCheck.dll", "-u", "<http://localhost/health>"]

WORKDIR /app
COPY --from=http-check-builder /out/ .
COPY --from=builder /out/ .
FROM diamol/dotnet-aspnet

ENV RngApi:Url=http://numbers-api/rng

CMD dotnet Utilities.HttpCheck.dll -c RngApi:Url -t 900 && \\
    dotnet Numbers.Web.dll
WORKDIR /app
COPY --from=http-check-builder /out/ .
COPY --from=builder /out/ .

8.4 도컀 μ»΄ν¬μ¦ˆμ— ν—¬μŠ€ 체크와 λ””νŽœλ˜μ‹œ 체크 μ •μ˜ν•˜κΈ°

  • 도컀 μ»΄ν¬μ¦ˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœμ— 이상이 생겼을 λ•Œ μ–΄λŠ 정도 볡원할 수 μžˆλŠ” κΈ°λŠ₯이 μžˆλ‹€.
  • κ·ΈλŸ¬λ‚˜, 도컀 μ»΄ν¬μ¦ˆλŠ” 이상이 생긴 μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒˆλ‘œμš΄ μ»¨ν…Œμ΄λ„ˆλ‘œ κ΅μ²΄ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • μƒˆλ‘œμš΄ μ»¨ν…Œμ΄λ„ˆλ‘œ ꡐ체 κ³Όμ • 쀑에 더 큰 μž₯μ• κ°€ λ°œμƒν•  수 있기 λ•Œλ¬Έμ΄λ‹€.
  • 도컀 컴포즈 νŒŒμΌμ—μ„œλŠ” ν—¬μŠ€ 체크의 μ˜΅μ…˜μ„ 더 μ„Έμ„Έν•˜κ²Œ μ„€μ •ν•  수 μžˆλ‹€.
numbers-api:
	image: diamol/ch08-numbers-api:v3
	restart: on-failure
	ports:
		- "8080:80"
	healthcheck:
		test: ["CMD", "dotnet", "Utilites.HttpCheck.dll", "-t", "150"]
		interval: 5s
		timeout: 1s
		retries: 2
		start_period: 5s
	networks:
		- app-net
  • test : ν—¬μŠ€μ²΄ν¬λ₯Ό μœ„ν•œ λͺ…λ Ήμ–΄.
  • restart : μ»¨ν…Œμ΄λ„ˆ μ’…λ£Œμ‹œ μž¬μ‹œμž‘ κ΄€λ ¨ μ˜΅μ…˜
$ docker comopse up -d

WARN[0000] networks.app-net: external.name is deprecated. Please set name and external: true 
[+] Running 13/13
 βœ” numbers-web Pulled                                                                                                                                                                                  6.1s 
   βœ” 2c6f18abfee2 Pull complete                                                                                                                                                                        2.0s 
   βœ” c8933103e3d5 Pull complete                                                                                                                                                                        2.2s 
   βœ” fae779850b6e Pull complete                                                                                                                                                                        2.8s 
 βœ” numbers-api Pulled                                                                                                                                                                                  4.9s 
   βœ” f338bc35613f Already exists                                                                                                                                                                       0.0s 
   βœ” 5636d912c69e Already exists                                                                                                                                                                       0.0s 
   βœ” 362df8b85fca Already exists                                                                                                                                                                       0.0s 
   βœ” 24c3992ceef4 Already exists                                                                                                                                                                       0.0s 
   βœ” 546a81dfea0f Already exists                                                                                                                                                                       0.0s 
   βœ” a1d31c83c9fb Pull complete                                                                                                                                                                        1.1s 
   βœ” b4b21f2c15f2 Pull complete                                                                                                                                                                        1.6s 
   βœ” 5b2370cbc2a2 Pull complete                                                                                                                                                                        1.6s 
[+] Running 2/2
 βœ” Container numbers-numbers-api-1  Started                                                                                                                                                            0.3s 
 βœ” Container numbers-numbers-web-1  Started         
 
$ docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS                                     PORTS                                     NAMES
a27d8181cf94   diamol/ch08-numbers-web:v3   "/bin/sh -c 'dotnet …"   7 seconds ago    Up Less than a second (health: starting)   0.0.0.0:8088->80/tcp, [::]:8088->80/tcp   numbers-numbers-web-1
25079f8a8819   diamol/ch08-numbers-api:v3   "dotnet Numbers.Api.…"   7 seconds ago    Up 6 seconds (healthy)                     0.0.0.0:8087->80/tcp, [::]:8087->80/tcp   numbers-numbers-api-1
26e8b5893314   diamol/ch08-numbers-web      "dotnet /app/Numbers…"   47 minutes ago   Up 47 minutes                              0.0.0.0:8082->80/tcp, [::]:8082->80/tcp   infallible_maxwell

$ docker logs numbers-numbers-web-1
HTTPCheck: status OK, url <http://numbers-api/rng>, took 5098ms
HTTPCheck: status OK, url <http://numbers-api/rng>, took 39ms

...

8.5 ν—¬μŠ€ 체크와 λ””νŽœλ˜μ‹œ 체크둜 볡원λ ₯μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€ 수 μžˆλŠ” 이유

  • dependency 와 healthcheck λ₯Ό μ‚¬μš©ν•˜λ©΄, ν”Œλž«νΌμ΄ μ‹€ν–‰ μˆœμ„œλ₯Ό 보μž₯ν•˜κ²Œ ν•  ν•„μš”κ°€ μ—†λ‹€.
  • μ˜μ‘΄κ΄€κ³„λ₯Ό λ§Œμ‘±ν•˜μ§€ λͺ»ν•œ μƒνƒœμ˜ 경우 섀정에 따라 μž¬μ‹€ν–‰λ˜κ±°λ‚˜ λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆλ‘œ ꡐ체될 것이닀.
  • μžκ°€ μˆ˜λ³΅μ΄λž€ μΌμ‹œμ μΈ 였λ₯˜λ₯Ό ν”Œλž«νΌμ΄ ν•΄μ†Œν•΄μ£ΌλŠ” 것이닀.

dependency 와 healthcheck μ‚¬μš©μ—λŠ” 주의점.

  • healthcheckλŠ” 주기적으둜 자주 μ‹€ν–‰λ˜λ―€λ‘œ, μ‹œμŠ€ν…œμ— λΆ€ν•˜λ₯Ό μ£ΌλŠ” λ‚΄μš©μ΄μ–΄μ„œλŠ” μ•ˆλœλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹€μ§ˆμ μœΌλ‘œ λ™μž‘μ€‘μΈμ§€ 검증할 수 μžˆλŠ” 핡심적인 λΆ€λΆ„λ§Œμ„ ν…ŒμŠ€νŠΈ ν•΄μ•Ό λœλ‹€.
  • dependency λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹œμž‘ μ‹œμ—λ§Œ μ‹€ν–‰λœλ‹€.
  • λ”°λΌμ„œ, ν…ŒμŠ€νŠΈμ— μ†Œλͺ¨λ˜λŠ” λ¦¬μ†ŒμŠ€λŠ” 크게 지μž₯이 μ—†μ§€λ§Œ, ν…ŒμŠ€νŠΈ λŒ€μƒμ΄ 빠짐없도둝 ν•΄μ•Όν•œλ‹€.
  • λ””νŽœλ˜μ‹œ 체크에 λˆ„λ½λœ 의쑴 κ΄€κ³„λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μž₯μ• κ°€ 될 수 μžˆλ‹€.

Toss Tech ν—¬μŠ€μ²΄ν¬ μž₯μ•  κ΄€λ ¨ κΈ€

Spring Boot Actuator의 ν—¬μŠ€μ²΄ν¬ μ‚΄νŽ΄λ³΄κΈ°

 

Spring Boot Actuator의 ν—¬μŠ€μ²΄ν¬ μ‚΄νŽ΄λ³΄κΈ°

μ„œλ²„μ˜ μƒνƒœλ₯Ό μ•Œλ €μ£ΌλŠ” ν—¬μŠ€ 체크에 λŒ€ν•΄ μ•Œκ³  κ³„μ‹œλ‚˜μš”? λ‹¨μˆœνžˆ 200 OK만 λ‚΄λ €μ£Όκ² κ±°λ‹ˆ ν•˜κ³  λ³„λ‘œ 신경을 μ•ˆ μ“°κ³  κ³„μ…¨λ‚˜μš”? ν•΄λ‹Ή ν¬μŠ€νŠΈμ—μ„œλŠ” Spring Boot Actuaorκ°€ μ œκ³΅ν•΄μ£ΌλŠ” ν—¬μŠ€ μ²΄ν¬λŠ” μ–΄λ–€

toss.tech

8.6 μ—°μŠ΅λ¬Έμ œ

  • Dockerfile 에 dependency check 와 health check λ₯Ό 좔가해라.

Base Dockerfile

FROM diamol/node

ENV MAX_ALLOCATION_MB=4096 \\
    LOOP_ALLOCATION_MB=512 \\
    LOOP_INTERVAL_MS=2000

CMD ["node", "memory-hog.js"]

WORKDIR /app
COPY src/ .

Solution Dockerfile

FROM diamol/node

ENV MAX_ALLOCATION_MB=4096 \\
    LOOP_ALLOCATION_MB=512 \\
    LOOP_INTERVAL_MS=2000

CMD node memory-check.js && \\
    node memory-hog.js

HEALTHCHECK --interval=5s \\
 CMD node memory-check.js

WORKDIR /app
COPY src/ .
728x90
λ°˜μ‘ν˜•
MyeongDev