>

Visual Studio 15.8.8을 사용하여 .NET Core Project (2.1)로 새로운 솔루션을 시작했습니다. docker compose 파일을 시작 프로젝트로 설정하여 실행하고 디버깅 할 수 있습니다. 작동합니다!

논리적으로 간단한 명령 줄로 도커 이미지를 만들 수 있어야합니다. 그러나 csproj를 찾을 수 없다고 불평합니다. 이건 이상해. 파일이 존재하며 내가 말했듯이 Visual Studio에서 실행할 수 있습니다. 하나의 디렉토리와 dockerfile이있는 디렉토리에서 시도했습니다. 같은 문제입니다.

어떻게 해결할 수 있습니까? 내가 원하는 유일한 것은 단순히 이미지를 작성한 다음 docker 명령을 사용하여 이미지를 실행하는 것입니다.

도커 파일

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["TryNewDocker2/TryNewDocker2.csproj", "TryNewDocker2/"]
RUN dotnet restore "TryNewDocker2/TryNewDocker2.csproj"
COPY . .
WORKDIR "/src/TryNewDocker2"
RUN dotnet build "TryNewDocker2.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "TryNewDocker2.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "TryNewDocker2.dll"]

작성 파일은 다음과 같습니다.

version: '3.4'
services:
  trynewdocker2:
    image: ${DOCKER_REGISTRY}trynewdocker2
    build:
      context: .
      dockerfile: TryNewDocker2/Dockerfile

논리적으로이 문제를 해결할 때 "docker-compose up"이 계속 작동하기를 원합니다.


  • 답변 # 1

    이것은 dockerfile의 파일 경로에 대한 잘못된 루트 폴더로 인해 발생합니다.

    Docker 에서 시작 루트 폴더는 C:\Users\...\repos\TryNewDocker2 입니다. 하지만 command 에서 실행하는 동안 그 뿌리 사료는 C:\Users\...\repos\TryNewDocker2\TryNewDocker2 입니다 따라서 TryNewDocker2.csproj 의 경로   TryNewDocker2/TryNewDocker2.csproj 에서 변경되었습니다   TryNewDocker2.csproj 로      

    아래 dockerfile을 사용해보십시오 :

    FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
    WORKDIR /app
    EXPOSE 59162
    EXPOSE 44342
    FROM microsoft/dotnet:2.1-sdk AS build
    WORKDIR /src
    COPY ["TryNewDocker2.csproj", "TryNewDocker2/"]
    RUN dotnet restore "TryNewDocker2/TryNewDocker2.csproj"
    COPY . ./TryNewDocker2/
    WORKDIR "/src/TryNewDocker2"
    RUN dotnet build "TryNewDocker2.csproj" -c Release -o /app
    FROM build AS publish
    RUN dotnet publish "TryNewDocker2.csproj" -c Release -o /app
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app .
    ENTRYPOINT ["dotnet", "TryNewDocker2.dll"]
    
    

    업데이트

    Docker와 명령 모두에서 작업하려면 dockerfile을 변경하지 말고 아래 경로에서 dockerfile 경로를 지정하여 명령을 실행하십시오.

    C:\Users\...\repos\TryNewDocker2>docker build -t gogo -f TryNewDocker2/Dockerfile .
    
    

관련 자료

  • 이전 javascript - redux-form의 initialValues에서 하나의 값을 지우는 방법은 무엇입니까?
  • 다음 web scraping - 웹 사이트에서 데이터를 긁을 수 없음 - python bs4