2017-12-15 10 views
0

Docker에 새롭고 mongoDB를 실행하는 컨테이너와 웹 응용 프로그램을 실행하는 컨테이너 2 개를 설치하려고합니다..NET 코어에 도달 할 수없는 도커 작성

문제는 localhost : 5000 또는 0.0.0.0:5000을 통해 .NET 코어 응용 프로그램에 액세스 할 수 없다는 것입니다.

몽고가 잘 돌아갑니다. 여기

내 고정 표시기 - compose.yml

version: '3' 
services: 
    web: 
    build: . 
    ports: 
    - "5000:5000" 
    mongo: 
    build: ../../../docker/wishare-mongo/ 
    volumes: 
    - ../../../docker/wishare-mongo:/data/db 
    ports: 
    - "27017:27017" 

Dockerfile .NET 핵심 응용 프로그램을위한 것입니다

FROM microsoft/aspnetcore-build:2.0 AS build-env 
WORKDIR /app 
ENV ASPNETCORE_URLS="http://*:5000" 

# 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 microsoft/aspnetcore:2.0 
WORKDIR /app 
COPY --from=build-env /app/out . 
EXPOSE 5000 
ENTRYPOINT ["dotnet", "Wishare-Integration-Api.dll"] 

고정 표시기-작성 빌드 및 이에 대한 결과로 오류없이 실행을 고정 표시기-구성 웹 컨테이너 :

web_1 | 호스팅 환경 : 제작 web_1 | 콘텐츠 루트 경로 :/app web_1 | 지금 듣기 : http://[::]:80 web_1 | 응용 프로그램이 시작되었습니다. Ctrl + C를 눌러 을 종료하십시오.

이것은 docker ps 결과이며 포트 5000은 docker ps 결과를 기반으로 내 보내야합니다.

Docker ps result

어떤 아이디어가?

+0

출력은 앱이 컨테이너 내부의 포트 80에서 수신 대기 중임을 나타냅니다. 앱을 시작할 때 포트를 명시 적으로 80으로 설정하는 항목이 있습니까? 그것은 환경 변수를 무시할 수 있습니다. – nlawalker

+0

또한 호스트에서 localhost 대신 127.0.0.1을 명시 적으로 사용해보십시오. 로컬 호스트가 작동하지 않는 일부 환경이 구성되어있는 것을 보았습니다. – nlawalker

+0

질문에 답하기 위해 @nlawalker 아니오 포트 5000에서로드하는 도커 대신 직접 실행 한 응용 프로그램을 실행할 때 아무 것도 변경하지 않았습니다. 또한, 127.0.0.1은 포트 5000이나 80에서도 작동하지 않습니다. –

답변

1

.NET에서는 port 80을 사용합니다. 따라서 Ive가 도커 파일을 변경하고 5000 대신 포트 80을 내보내고 docker-compose에서 포트 5000을 포트 80으로 변경하면 예상대로 작동합니다.

그래서 포트 5000에서 실행하려면 .NET 측에서 일부 구성이 필요합니다.