У меня есть веб-проект, который написан поверх ASP. NET Core 3.1 framework. Я хочу запустить проект в docker контейнере в Linux виртуальной коробке.
Я создаю следующий docker-compose.yml
файл
version: '3.4'
services:
myproject:
image: ${DOCKER_REGISTRY-}myproject
build:
context: .
dockerfile: myproject/Dockerfile
volumes:
- storage:/storage
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
ports:
- 51736:80
- 44344:443
volumes:
storage:
Когда я выполняю docker-compose up --build
, я получаю следующий вывод
Successfully built b084cb989f05
Successfully tagged myproject:latest
Starting myproject_myproject_1 ... done
Attaching to myproject_myproject_1
myproject_1 | Unhandled exception. System.IO.DirectoryNotFoundException: /app/Storage/
myproject_1 | at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root, ExclusionFilters filters)
myproject_1 | at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root)
Из журналы над приложением ищут /app/Storage/
путь для инициализации PhysicalFileProvider
. Я не уверен, откуда это исходит. Согласно моему файлу docker-compose.yml
, объем хранилища должен быть /storage
, а не /app/Storage/
.
В какой-то момент в моем файле docker-compose.yml
было storage:/app/Storage
, но его больше нет. Что может быть причиной того, что изображение прикреплено к неправильной папке тома / хранилища?
Обновлено
Вот содержимое Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["myproject/myproject.csproj", "myproject/"]
RUN dotnet restore "myproject/myproject.csproj"
COPY . .
WORKDIR "/src/myproject"
RUN dotnet build "myproject.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "myproject.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "myproject.dll"]
Я попробовал следующую команду, чтобы удалить все
docker-compose down -v --rmi all --remove-orphans
docker-compose build --no-cache
Однако я все еще получаю тот же результат. Как правильно смонтировать папку /storage
с образом?