2022년 2월 12일 토요일

시놀로지 asp.net core 3.1 도커에서 런타임으로 돌리기

https://til.hyunjin.space/framework/.net-core-3.1/setting-for-synology-docker-with-.net-core-3.1

https://cntechsystems.tistory.com/103

참조한 블로그


시놀로지에서 도커허브 자료실에서 

asp.net core 3.1 runtime 이미지가 검색으로 안나오니까 putty로 나스에 접속해서

docker pull mcr.microsoft.com/dotnet/aspnet:3.1-buster-slim 

로 가져오면 이미지에 존재함.. ㅇㅇ

볼륨연결해서 폴더에 배포파일 넣고 컨테이너에서 해당폴더로 가서

dotnet 프로젝트명.dll 이라고하면 바로 실행됨 

백드라운드 프록시보다는 안정성이 덜하지만 그래도 바로됨.. ㅇㅇ


------------------------------------------------------------------------

[nginx 백그라운드 프록시]

아무래도 전면부에 웹서버를 띄우고 구현체를 프록시로 연결하는게 좋아보이긴한다.

이를위해

[프로젝트 파일중에 Program.cs에서 5000번 포트사용 추가]

webBuilder.UseStartup<Startup>().UseUrls("http://0.0.0.0:5000");

이렇게 안할거면 실행할때 dotnet 프로젝트명.dll --urls "http://localhost:5000" 

로 실행해서 5000번 포트로 띄울수 있기는함

[Startup.cs 파일에서]

ConfigureServices 메서드에서 다음을추가 전방프록시헤더 사용을 정의해줌..

services.Configure<ForwardedHeadersOptions>(options => {
                options.ForwardedHeaders =
                Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor
                | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto;
            });


리눅스컨테이너에서..  nano랑 niginx를 설치함

그리고 /etc/nginx/conf.d/default.conf 파일을 다음과 같이수정

server {
    listen        80;
    server_name   example.com *.example.com;

    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}


자동등록을 위해 systemctl로 서비스로 등록을 하면되는데..
도커 컨테이너는 가상머신이 아니니까.. 그런거 안된다..
-d 옵션으로 nginx랑 dotnet을 실행시키면될거 같은데.. 흠..
귀찮으니 그냥 nginx 실행후 폴더가서 dotnet 프로젝트명.dll 으로 실행하고 나온다..

자동실행부분은 컨테이너에서 CMD를 변경하는 커밋으로 
해결하는 방법으로 docker를 좀더 조사 해봐야겠다.
sh파일로 엔진엑스를 백그라운드로 띄우고 닷넷을 실행하는 방향으로..


댓글 없음:

댓글 쓰기