NAS서버에서 ASP.NET Core 웹 서버와 MSSQL을 연동해서 돌리는 방법 입니다. ASP.NET Core는 Kestrel서버로 돌려서 셀프 호스팅으로 사용하고 제목과 같이 ASP.NET Core 웹어플리케이션 자체 이미지를 사용하지 않고 리눅스 도커 안에서 실행시킵니다.
- NAS서버
- NAS에 도커 설치
- 리눅스 도커 이미지 [dotent core가 포함된 리눅스]
먼저 리눅스 도커 이미지를 받습니다. centos8 이미지는 카카오톡 : 닷넷 개발자 모임 - bluepope님이 만드신걸 사용했습니다. 이미지를 컨테이너에 추가하고 컨테이너 설정을 합니다. [포트설정] 포트 설정은 ASP.NET Core에서 사용되는 포트로 설정하면 됩니다.
[볼륨] 볼륨은 NAS내 로컬 경로와 컨테이너 가상화에서 사용할 경로를 맞춰주면 됩니다.
MSSQL 서버 이미지를 받습니다.
이미지를 받고 컨테이너에 추가해 다음과 같이 설정을 합니다.
[포트설정] MSSQL기본 포트인 1433으로 설정합니다. (다른 포트로 변경해도 됩니다.)
[볼륨] 볼륨설정을 하지 않으면 컨테이너를 지울때 해당 SQL의 DB데이터도 같이 삭제 됩니다. 데이터를 유지 하기 위해서 볼륨을 다음과 같이 설정해 줍니다.
[환경 변수] SQL의 사용 동의 및 SA계정의 패스워드 설정을 환경 변수를 통해 설정합니다.
ASP.NET Core 웹서버에서 MSSQL의 접속설정은 도커 링크를 통해 설정해 줍니다. MSSQL 포트를 별도 외부로 포워딩 하지 않고 내부 링크를 통해 접근할 수 있도록 설정합니다. centos8 컨테이너의 편집화면에서 링크 부분을 다음과 같이 설정해 줍니다.
위 처럼 링크설정을 하게 되면 centos8 컨테이너 실행시 MSSQL 컨테이너도 같이 따라서 실행 되어집니다. ASP.NET Core에서 DB접속 부분은 다음과 같이 사용할 수 있습니다.
{ "ConnectionStrings": { "MsSql_Linux_Docker": "Server=링크별칭;uid=sa;pwd=패스워드;database=데이터베이스명;Pooling=true;Min Pool Size=20;Max Pool Size=100;Connection Timeout=90" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" } | cs |
|
참고로 UseKestrel옵션으로 ListenAnyIP포트로 도커에서 설정한 포트로 설정해주어야 해당 포트로 바인딩 되서 호스팅 되도록 사용됩니다.
Program.cs public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.UseKestrel(option => { option.ListenAnyIP(5008); }); }); | cs |
|
|