2016-07-02 2 views
4

막 다른 골목으로 뛰어 들었습니다. 나는 dotnet core 1.0.0 app을 가지고있다. 나는 일어나려고 노력 중이다. 그것은 리눅스와 윈도우에서 잘 작동합니다. 이제 나는 그것을 도커에 넣으려고합니다. 나는이 고정 표시기 파일을 만든 : 고정 표시기 이미지에 응용 프로그램 폴더에내 Docker DotNet 핵심 웹 사이트에 액세스 할 수 있습니다.

FROM microsoft/dotnet:1.0.0-preview2-sdk 

COPY . /app 
WORKDIR /app/app 
RUN ["dotnet", "restore"] 

ENTRYPOINT ["dotnet", "run"] 

그것은 단순히 복사 코드 및 종속성을 복원하고 다음을 실행합니다. 내가 그것을 실행하려고하면 모든 것이 작동하고 Windows 나 Linux가 시작될 때와 똑같이 인쇄되기 때문에 시작됩니다.

docker run --name dotNetWeb -p 8080:8080 kiksen1987/dotnetcore 

링크 코드에 : https://github.com/kiksen1987/dotnetcore

링크 도커의 이미지 : 프로젝트 실행

Docker Console

명령 https://hub.docker.com/r/kiksen1987/dotnetcore/

는 정말 아무 생각이 무엇 없었다 잘못되어가는. 나는 다른 프로젝트의 99 %와 같은 방식을 어느 정도 취하고있다.

좋은 aswell : 마지막으로

+0

나는 dockerfile에서 --expose도 사용하지 않으려 고 노력했다. – Kiksen

+0

웬일인지 localhost : 8080이 http://www.localhost.com:8080/ – Kiksen

+0

로 리디렉션됩니다. 왜 지옥이 다운볼트입니까? 연구를하지 않기 때문에. Google 검색 기능이 얇아서이 문제에 대해 몇 시간을 사용했습니다 ... – Kiksen

답변

9

것이이 문제를 개선하기 위해 모든 의견.

나는이 블로그 게시물을 발견 : 그것은 내가 감독 한 중요한 포인트가 있었던 DOTNET 코어의 이전 버전을 사용하더라도 http://dotnetliberty.com/index.php/2015/11/26/asp-net-5-on-aws-ec2-container-service-in-10-steps/

을;

dnx web 명령에 0.0.0.0 (기본 로컬 호스트가 아닌)으로 제공되도록 추가 매개 변수를 제공했습니다. 이렇게하면 Docker에서 제공하는 포트 전달에서 오는 요청을 0.0.0.0으로 기본 제공하는 웹 응용 프로그램을 사용할 수 있습니다.

어느 것이 아주 중요합니다.

솔루션 :

var host = new WebHostBuilder() 
      .UseKestrel() 
      .UseStartup<Startup>() 
      .UseUrls("http://0.0.0.0:5000") 
      .Build(); 

오래된 코드 :

리눅스와 윈도우와 부두 노동자에서 시작 응용 프로그램에서 완벽하게 작동하는 것 같았다 때문에 들거 좌절, 그러나 결코 어떤 요청을 받고하지
var host = new WebHostBuilder() 
      .UseKestrel() 
      .UseStartup<Startup>() 
      .UseUrls("http://localhost:5000") 
      .Build(); 

. 희망이 밖에 다른 불쌍한 영혼을하는 데 도움이 :)

+2

dockerfile에서 환경 변수를 설정하여 UseUrls 호출을 없앨 수 있습니다. ENV ASPNETCORE_URLS = "http : //0.0.0.0:5000" –

+1

http : // * : 5000으로 지정할 수도 있습니다. 다만 FYI – DerrickF

0

당신은 빌드에서 여기 ASP.NET 코어와 도커과 사용자 정의 이미지에 대한 몇 가지 유용한 정보를 찾을 수 있습니다 https://hahoangv.wordpress.com/2016/05/23/asp-net-core-run-in-docker/

Dockerfile을 :

FROM microsoft/dotnet:1.0.0-preview2-sdk 

# Set environment variables 
ENV ASPNETCORE_URLS="http://*:5000" 
ENV ASPNETCORE_ENVIRONMENT="Development" 

# Copy files to app directory 
COPY . /app 

# Set working directory 
WORKDIR /app 

# Restore NuGet packages 
RUN ["dotnet", "restore"] 

# Open up port 
EXPOSE 5000 

# Run the app 
ENTRYPOINT ["dotnet", "run"] 

와 Program.cs 파일 :

public static void Main(string[] args) 
     { 
      // Get environment variables 
      var config = new ConfigurationBuilder() 
       .AddEnvironmentVariables(&quot;&quot;) 
       .Build(); 
      // You need to add these lines for accessing outside of Docker 
      var url = config["ASPNETCORE_URLS"] ?? "http://*:5000"; 
      var env = config["ASPNETCORE_ENVIRONMENT"] ?? "Development"; 

      var host = new WebHostBuilder() 
       .UseKestrel() 
       .UseUrls(url) 
       .UseEnvironment(env) 
       .UseContentRoot(Directory.GetCurrentDirectory()) 
       .UseIISIntegration() 
       .UseStartup<Startup>() 
       .Build(); 

      host.Run(); 
     } 

희망이 도움이!

관련 문제