λ°˜μ‘ν˜•

Windows Docker μž‘μ—…μž μ„œλΉ„μŠ€

ASP.NET CoreλŠ” Windows, macOS 및 Linuxμ—μ„œ 인터넷 μ—°κ²° 앱을 λ™μž‘ν•  수 μžˆλŠ” ν”„λ ˆμž„ μ›Œν¬μž…λ‹ˆλ‹€. κ°„λ‹¨νžˆ μ„€λͺ…ν•˜λ©΄ μ œκ°€ μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œλ₯Ό λΉŒλ“œν•˜κ³  κ·Έ 결과물을 ASP.NET Coreλ₯Ό 톡해 μ„œλΉ„μŠ€λ₯Ό λ™μž‘ν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

κ²Œλ‹€κ°€ Visual Studioμ—μ„œ μ œμž‘ κ°€λŠ₯ν•œ ASP.NET Core Worker Service(μž‘μ—…μž μ„œλΉ„μŠ€) ν…œν”Œλ¦Ώμ€ μž₯κΈ°κ°„ μ‹€ν–‰λ˜λŠ” μ„œλΉ„μŠ€ 앱을 κ°œλ°œν•˜κΈ° μœ„ν•΄ μ œκ³΅λ©λ‹ˆλ‹€. 즉, μ„œλ²„μ—μ„œ λ©ˆμΆ”μ§€ μ•Šκ³  κ³„μ†ν•΄μ„œ 돌릴 μ„œλΉ„μŠ€λ₯Ό μ œμž‘ν•˜κΈ° μœ„ν•œ ν”„λ‘œμ νŠΈλΌλŠ” 것이죠.

이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μž‘μ—…μž μ„œλΉ„μŠ€λ₯Ό λΉŒλ“œν•˜κ³  Windows Dockerμ—μ„œ λ™μž‘μ‹œν‚€λŠ” 과정을 μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€.

Windows Docker μ€€λΉ„ν•˜κΈ°

μš°μ„  Windows Dockerλ₯Ό λ¨Όμ € μ„€μΉ˜ν•©λ‹ˆλ‹€. Windows 10에 Dockerλ₯Ό μ„€μΉ˜ν•˜λŠ” 방법은 μ•„λž˜ 링크λ₯Ό μ°Έκ³ ν•©λ‹ˆλ‹€. ν˜„μž¬ ν™ˆνŽ˜μ΄μ§€μ—μ„œ μ œκ³΅λ˜λŠ” 버전과 ν¬μŠ€νŒ…μ— 기재된 버전과 μ°¨μ΄λŠ” μžˆμ§€λ§Œ, μ΅œμ‹  λ²„μ „μœΌλ‘œ λ™μΌν•˜κ²Œ 따라 해도 λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

[Docker] Windows 10 Docker Desktop μ„€μΉ˜ 방법

 

[Docker] Windows 10 Docker Desktop μ„€μΉ˜ 방법

제 λΈ”λ‘œκ·Έμ—λŠ” λ ˆλ“œλ§ˆμΈμ— κ΄€ν•œ λ‚΄μš©μ΄ 많이 κΈ°μž¬λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. Windows Redmine κ³Ό Synology NAS Docker Redmine 두 κ°€μ§€λ‘œ λ˜μ–΄μžˆλŠ”λ°μš”. μ΄λ²ˆμ— μ†Œκ°œν•  λ‚΄μš©μ€ Windows 용 Docker Redmine μ„€μΉ˜ λ°©λ²•μž…λ‹ˆλ‹€...

luckygg.tistory.com

 

μž‘μ—…μž μ„œλΉ„μŠ€ λΉŒλ“œν•˜κΈ°

Visual Studio 2019μ—μ„œ μž‘μ—…μž μ„œλΉ„μŠ€ ν”„λ‘œμ νŠΈλ₯Ό λΉŒλ“œν•˜κ³  κ²°κ³Όλ₯Ό ν™•μΈν•˜λŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€.

더보기

Visual Studioμ—μ„œ μž‘μ—…μž μ„œλΉ„μŠ€ ν…œν”Œλ¦Ώμ„ μ„ νƒν•˜κ³  ExamWorkerService μ΄λ¦„μœΌλ‘œ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

μž‘μ—…μž μ„œλΉ„μŠ€ ν…œν”Œλ¦Ώ 선택
μž‘μ—…μž μ„œλΉ„μŠ€ ν…œν”Œλ¦Ώ 선택

λŒ€μƒ ν”„λ ˆμž„μ›Œν¬λŠ” .NET 5.0을 μ„ νƒν•˜κ³  Docker μ‚¬μš© 체크 및 Windowsλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

λŒ€μƒ ν”„λ ˆμž„μ›Œν¬ 및 Docker OS 선택
λŒ€μƒ ν”„λ ˆμž„μ›Œν¬ 및 Docker OS 선택

ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜λ©΄ λ‹€μŒκ³Ό 같은 κΈ°λ³Έ μ½”λ“œκ°€ κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 1μ΄ˆλ§ˆλ‹€ Worker running at: μ‹œκ°„ λ©”μ‹œμ§€κ°€ 좜λ ₯λ˜λŠ” λ™μž‘μž…λ‹ˆλ‹€.

기본으둜 μ œκ³΅λ˜λŠ” μ½”λ“œ
기본으둜 μ œκ³΅λ˜λŠ” μ½”λ“œ

μ†”λ£¨μ…˜ νƒμƒ‰κΈ°μ—μ„œ Dockerfile을 μ„ νƒν•˜λ©΄, 기본으둜 μ•„λž˜μ˜ λ‚΄μš©μ΄ μž‘μ„±λ˜μ–΄ μžˆλŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. μΆ”ν›„ 이 Dockerfile을 μƒμœ„ 경둜둜 볡사할 κ²λ‹ˆλ‹€.

Dockerfile κΈ°λ³Έ λ‚΄μš©
Dockerfile κΈ°λ³Έ λ‚΄μš©

이제 ν”„λ‘œμ νŠΈ 파일의 마우슀 우츑 λ©”λ‰΄μ—μ„œ κ²Œμ‹œ 메뉴λ₯Ό ν΄λ¦­ν•©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ 파일의 κ²Œμ‹œ 메뉴 클릭
ν”„λ‘œμ νŠΈ 파일의 κ²Œμ‹œ 메뉴 클릭

κ²Œμ‹œ λ©”λ‰΄μ—μ„œ 폴더λ₯Ό μ„ νƒν•˜κ³  λ‹€μŒ λ²„νŠΌμ„ ν΄λ¦­ν•©λ‹ˆλ‹€.

κ²Œμ‹œ λ©”λ‰΄μ˜ 폴더 선택
κ²Œμ‹œ λ©”λ‰΄μ˜ 폴더 선택

폴더 μœ„μΉ˜λŠ” 변경해도 μƒκ΄€μ—†μŠ΅λ‹ˆλ‹€. κ²Œμ‹œν•  파일이 μƒμ„±λ˜λŠ” μœ„μΉ˜λ₯Ό μ§€μ •ν•˜λŠ” μ˜΅μ…˜μž…λ‹ˆλ‹€. 폴더 μœ„μΉ˜ 지정 ν›„ 마침 λ²„νŠΌμ„ ν΄λ¦­ν•©λ‹ˆλ‹€.

폴더 μœ„μΉ˜ μ§€μ •ν•˜κΈ°
폴더 μœ„μΉ˜ μ§€μ •ν•˜κΈ°

κ²Œμ‹œ μ˜΅μ…˜ 지정이 μ™„λ£ŒλμŠ΅λ‹ˆλ‹€. μƒλ‹¨μ˜ κ²Œμ‹œ λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ μ§€μ •ν•œ 폴더에 λΉŒλ“œλœ 파일이 μƒμ„±λ©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ κ²Œμ‹œν•˜κΈ°
ν”„λ‘œμ νŠΈ κ²Œμ‹œν•˜κΈ°

μ§€μ •λœ 폴더에 가보면 μƒμ„±λœ 파일이 μ—¬λŸΏ μžˆμŠ΅λ‹ˆλ‹€. 그리고 ExamWorkerService.exeλ₯Ό 찾을 수 μžˆλŠ”λ°μš”.

λΉŒλ“œλœ νŒŒμΌλ“€
λΉŒλ“œλœ νŒŒμΌλ“€

νŒŒμΌμ„ μ‹€ν–‰ν•΄ 보면 μ•„λž˜μ™€ 같이 1μ΄ˆλ§ˆλ‹€ ν˜„μž¬ μ‹œκ°„μ„ κ³„μ†ν•΄μ„œ 좜λ ₯ν•©λ‹ˆλ‹€. 처음 ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν–ˆμ„ λ•Œ κ΅¬ν˜„λ˜μ–΄ 있던 예제 μ½”λ“œκ°€ λ™μž‘ν•˜λŠ” 것이죠.

μž‘μ—…μž μ„œλΉ„μŠ€ λ™μž‘ ν™”λ©΄
μž‘μ—…μž μ„œλΉ„μŠ€ λ™μž‘ ν™”λ©΄

이제 이 μ„œλΉ„μŠ€λ₯Ό Windows Dockerμ—μ„œ λŒλ €λ³΄κ² μŠ΅λ‹ˆλ‹€.

Windows Docker에 μž‘μ—…μž μ„œλΉ„μŠ€ μ„€μΉ˜ν•˜κΈ°

이제 Windows Docker에 μž‘μ—…μž μ„œλΉ„μŠ€λ₯Ό μ„€μΉ˜ν•˜κ³  μ‹€ν–‰ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

더보기

μš°μ„  ν”„λ‘œμ νŠΈ μƒμœ„ 경둜둜 μ΄λ™ν•˜μ—¬ μ•žμ—μ„œ ν™•μΈν–ˆλ˜ Dockerfile을 λ³΅μ‚¬ν•©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μƒμœ„ κ²½λ‘œμ— Dockerfile λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£κΈ°
ν”„λ‘œμ νŠΈ μƒμœ„ κ²½λ‘œμ— Dockerfile λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£κΈ°

λͺ…λ Ή ν”„λ‘¬ν”„νŠΈλ₯Ό μ‹€ν–‰ν•˜κ³  μœ„ 경둜둜 μ΄λ™ν•©λ‹ˆλ‹€. μ €λŠ” 바탕화면에 ν”„λ‘œμ νŠΈκ°€ μžˆμœΌλ―€λ‘œ, λͺ…λ Ήμ–΄λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

cd C:\Users\Gg\Desktop\ExamWorkerService

그리고 Docker λΉŒλ“œλ₯Ό μœ„ν•œ λͺ…λ Ήμ–΄λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μ˜ myserviceλŠ” μ„œλΉ„μŠ€ μ΄λ¦„μ΄λ―€λ‘œ, 짓고 싢은 λŒ€λ‘œ 지어도 μƒκ΄€μ—†μŠ΅λ‹ˆλ‹€.

docekr build . -t myservice

μœ„ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ 도컀에 μ„œλΉ„μŠ€ μ„€μΉ˜κ°€ μ‹œμž‘λ©λ‹ˆλ‹€. μ•„λž˜μ™€ 같은 λ©”μ‹œμ§€κ°€ ν‘œμ‹œλλ‹€λ©΄ μ •μƒμ μœΌλ‘œ μ„€μΉ˜κ°€ μ™„λ£Œλœ κ²ƒμž…λ‹ˆλ‹€.

도컀 μ„œλΉ„μŠ€κ°€ μ •μƒμ μœΌλ‘œ μ„€μΉ˜λœ λͺ¨μŠ΅
도컀 μ„œλΉ„μŠ€κ°€ μ •μƒμ μœΌλ‘œ μ„€μΉ˜λœ λͺ¨μŠ΅

Windows Dockerλ₯Ό μ‹€ν–‰ν•˜λ©΄ Images에 myserviceκ°€ 보이기 μ‹œμž‘ν•©λ‹ˆλ‹€.

Docker 이미지 λͺ©λ‘
Docker 이미지 λͺ©λ‘

myservice ν•­λͺ©μ„ ν΄λ¦­ν•˜λ©΄ μš°μΈ‘μ— RUN λ²„νŠΌμ΄ ν‘œμ‹œλ©λ‹ˆλ‹€. λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ μ˜΅μ…˜ μ„€μ • 창이 ν‘œμ‹œλ˜λŠ”λ°μš”. μ—¬κΈ°μ„œλ„ 별도 지정 없이 Run λ²„νŠΌμ„ ν΄λ¦­ν•©λ‹ˆλ‹€.

myservice λ™μž‘ν•˜κΈ°
myservice λ™μž‘ν•˜κΈ°

μ•„λž˜ 화면은 μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘μ„ λ³΄μ—¬μ€λ‹ˆλ‹€. 방금 μ‹€ν–‰λœ μ»¨ν…Œμ΄λ„ˆ 이름을 ν΄λ¦­ν•©λ‹ˆλ‹€.

μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘
μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘

μ•žμ— κ³Όμ •μ—μ„œ 봀던 1초 간격 둜그 좜λ ₯ λ©”μ‹œμ§€κ°€ λ³΄μž…λ‹ˆλ‹€. μ •μƒμ μœΌλ‘œ λ„μ»€μ—μ„œ μ„œλΉ„μŠ€λ‘œ λ™μž‘ν•œλ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

λ„μ»€μ—μ„œμ˜ λ™μž‘ 확인
λ„μ»€μ—μ„œμ˜ λ™μž‘ 확인

정리

따라 ν•΄ λ³΄λ‹ˆ μ•„μ£Ό κ°„λ‹¨ν•˜μ£ ? μ €λŠ” μ‹œλ†€λ‘œμ§€ μ„œλ²„μ˜ Dockerμ—μ„œ μ„œλΉ„μŠ€λ₯Ό κ΅¬λ™ν•˜κΈ° 전에 ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ Windows Dockerμ—μ„œ μ΄λ ‡κ²Œ ν™•μΈν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. WindowsλŠ” 컴퓨터λ₯Ό 끄면 Dockerκ°€ μ’…λ£Œλ˜λ―€λ‘œ μ„œλΉ„μŠ€κ°€ λ©ˆμΆ°λ²„λ¦¬λ‹ˆ ν…ŒμŠ€νŠΈ 및 디버그 용으둜 μ‚¬μš©ν•˜κ³ , μ‹œλ†€λ‘œμ§€ μ„œλ²„λŠ” 계속 λ™μž‘ν•˜λ―€λ‘œ 릴리즈 용으둜 μ‚¬μš©ν•˜λŠ” 것이죠.

λ°˜μ‘ν˜•