Монтирование томов .NET Core Docker - PullRequest
3 голосов
/ 07 марта 2019

У меня есть следующее Dockerfile для создания приложения .NET Core 2.1:

FROM microsoft/dotnet:2.1.402-sdk AS builder
WORKDIR /app
# copy csproj and restore as distinct layers
COPY . .
RUN dotnet restore ./myproject.sln
# copy everything else and build
COPY . .
RUN dotnet publish ./myproject/myproject.csproj -c Release -o /app/out

# build runtime image
FROM microsoft/dotnet:2.1.4-aspnetcore-runtime
WORKDIR /app
COPY --from=builder /app/out ./
ENV ASPNETCORE_ENVIRONMENT Production
ENTRYPOINT ["dotnet", "myproject.dll"]

Я создаю образ Docker, и контейнер может быть создан без каких-либо проблем.Когда я пытаюсь обмениваться данными между этим контейнером и другим, я создаю следующий docker-compose файл:

version: "2"

services:
  another_app:
    restart: always
    image: another_app:latest
    container_name: another_app
    ports:
      - "4000"
    volumes:
      - shared-folder:/dist

  myproject_app:
    restart: always
    image: myproject:latest
    container_name: myproject
    volumes:
      - shared-folder:/app

volumes:
  shared-folder:

Настройка таким образом, что он не работает.Я получаю странное сообщение .NET для этого приложения:

myproject_app | Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
myproject_app |   http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
another_app| 0|another-a | Node Express server listening on http://localhost:4000 

Теперь я обнаружил, что проблема исчезает, когда я определяю громкость НЕ в корне приложения.Например, если я сделаю:

myproject_app:
    restart: always
    image: myproject:latest
    container_name: myproject
    volumes:
      - shared-folder:/app/another-folder

Это тогда работает.Почему нельзя смонтировать том на корневом уровне приложения .NET Core и почему вы получаете эту ошибку?

...