Я создал образ docker, используя следующий файл Docker:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY . .
ENTRYPOINT ["dotnet", "RPDemo.dll"]
База данных проекта находится в этом месте ./database/db_demo.db
Docker образ создается без проблем:
docker build -t rpdemo-docker:1.0.0 .
Я хотел бы сохранить базу данных вне контейнера. Я указал установку тома с помощью этой команды:
docker run --name rpdemo-container -v /mnt/cache/dev/database:/app/database -p 8383:80 rpdemo-docker:1.0.0
Кажется, что папка внутри контейнера монтируется во внешнюю папку. База данных скопирована, но имеет размер 0 КБ.
Без флага -v приложение работает, а база данных находится внутри контейнера и ее можно использовать. База данных и другие файлы должны быть сохранены во внешней папке.
ОБНОВЛЕНИЕ: я снова создал контейнер с флагом -v. Папка / database была подключена к внешней папке / mnt / cache / dev / database, но папка / database внутри контейнера была пустой. Одна из страниц приложения извлекает данные из базы данных. Как только я щелкнул по этой странице, был создан файл db длиной 0 КБ. Строка подключения предполагает, что база данных будет расположена. Кажется, что -v / mnt / cache / dev / database: / app / database перезаписывает содержимое папок.