Heroku에 .NET Core 배포
그러나 몇 가지 제한 사항이 있습니다. 특히 .NET Core는 즉시 지원되지 않습니다 😢. 우리는 그것을 고칠 수 있습니다!
수정
Heroku는 C# 코드를 직접 실행할 수 없지만 they do have support for Docker containers . 그것으로 우리의 솔루션은 명확합니다 - 모든 것을 고정화하십시오!
Docker에 .NET Core 앱 배포
다음은 .NET Core 과정을 위한 것이 아니지만 초보자인 경우 기본 파일 탐색에 대한 몇 가지 기본 사항을 선택할 수 있습니다. 우리가 다룰 내용:
1. 시작하기
일부 코드를 변경하기 전에 기본 구성 요소를 순서대로 가져와야 합니다. 계속하기 전에 다음이 있어야 합니다.
그것들을 제거하면 우리는 갈 준비가 된 것입니다.
2. 새 .NET Core 앱 만들기
먼저 새 .NET Core 앱을 만들어야 합니다. 찾을 수 있는 기본 .NET Core MVC 프로젝트 설정 단계를 따르겠습니다here.
3. 새 Dockerfile 설정
필요한 dockerfile은 너무 복잡하지 않은 매우 기본적인 것입니다.
# Dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . .
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
# Run the app on container startup
# Use your project name for the second parameter
# e.g. MyProject.dll
ENTRYPOINT [ "dotnet", "HerokuApp.dll" ]
또한 이미지 크기를 작게 유지하려면 .dockerignore 파일을 설정해야 합니다.
# .dockerignore
bin/
obj/
컨테이너를 테스트하려면 다음을 실행할 수 있습니다.
docker build -t YourAppName .
# The name variable (abc) is simply used to refer to the
# container later when we want to close everything down.
docker run -d -p 8080:80 --name abc YourAppName
http://localhost:8080으로 이동하면 앱이 실행되는 것을 볼 수 있습니다.
괜찮아 보이는데? 엄청난! 컨테이너를 로컬에서 종료합니다. 인터넷에 올라오려면 여기에서 실행할 필요가 없습니다!
docker rm --force abc
4. Heroku에서 새 앱 구성
5. Heroku 🚀로 출시
마지막으로 중요한 것은 온라인으로 가져오겠습니다.
1. 명령줄을 사용하여 Heroku 컨테이너 레지스트리에 로그인합니다.
heroku container:login
2. 위의 작업을 수행하지 않은 경우 도커를 빌드했는지 확인하십시오.
컨테이너!
docker build -t YourAppName .
3. 새로 빌드한 컨테이너를 Heroku로 푸시합니다.
# 'YourAppName' should be the name of the app you
# configured in Heroku in step 4.
heroku container:push -a YourAppName web
4. 드디어 출시!
heroku container:release -a YourAppName web
이제 https://your-app-name.herokuapp.com 으로 이동하면 기본 앱이 표시됩니다. 잠깐... 작동하지 않았습니다! 무슨 일이야?!
heroku 로그를 살펴보십시오.
heroku logs --tail
무섭게 보이는 로그 내에서 .NET Core가 .NET Core용 웹 서버인 'Kestrel'을 시작하지 못한 것을 볼 수 있습니다. 이는 앱을 실행할 수 없음을 의미합니다😢.
도커 컨테이너를 구성할 때 다시 로컬로 시작한 것을 기억한다면 전달한 매개변수 중 하나가 포트였습니다. Heroku가 사용할 포트를 제공하면 앱이 이에 대해 알아야 합니다!
Dockerfile의 끝을 다음과 같이 수정하십시오.
# Dockerfile
# ...
# ENTRYPOINT [ "dotnet", "HerokuApp.dll" ]
# Use the following instead for Heroku
CMD ASPNETCORE_URLS=http://*:$PORT dotnet HerokuApp.dll
이를 통해 컨테이너는 시작할 때 Heroku 제공 포트를 사용할 수 있습니다.
모든 것을 Heroku에 다시 배포합니다.
짜잔 - 웹에서 호스팅되는 고유한 .NET Core 앱입니다.
결론
위의 자습서가 도움이 되고 일부 초보자가 자신의 .NET Core 측면 프로젝트를 시작할 수 있기를 바랍니다.
읽는 사람이 추가 팁이나 더 나은 접근 방식이 있으면 아래에 의견을 남겨주세요!
읽어주셔서 감사합니다 👋
Reference
이 문제에 관하여(Heroku에 .NET Core 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alrobilliard/deploying-net-core-to-heroku-1lfe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)