Для этого мне нужно, чтобы SQL Server был запущен и работал, чтобы он мог создать схему, запустить сценарий миграции, а также заполнить мою базу данных.
Что касается заполнения, я переопределение OnModelCreating из EF Core для вставки нескольких записей.
С моим текущим файлом создания докеров я получаю эту ошибку:
< img alt="введите описание изображения здесь" src="
" />Мой файл Docker для моего бэкэнда .NET выглядит вот так
Код: Выделить всё
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 7132
EXPOSE 5194
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Services/MyApp/MyApp.API/MyApp.API.csproj", "Services/MyApp/MyApp.API/"]
RUN dotnet restore "Services/MyApp/MyApp.API/MyApp.API.csproj"
COPY . .
WORKDIR "/src/Services/MyApp/"
RUN dotnet tool install --global dotnet-ef --version 6.0.25
RUN /root/.dotnet/tools/dotnet-ef migrations add InitialCreate --verbose --startup-project "MyApp.API" --project "MyApp.Infrastructure"
RUN /root/.dotnet/tools/dotnet-ef database update --verbose --startup-project "MyApp.API" --project "MyApp.Infrastructure"
RUN dotnet build "MyApp.API/MyApp.API.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyApp.API/MyApp.API.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.API.dll"]
Код: Выделить всё
version: '3.8'
services:
myapp-db:
image: mcr.microsoft.com/mssql/server:2019-latest
container_name: myapp-db
environment:
ACCEPT_EULA: Y
SA_PASSWORD: mypassword
ports:
- "14330:1433"
restart: always
networks:
- myapp-network
volumes:
- myapp-db-volume:/var/opt/mssql
myapp-backend:
build:
context: ../myapp-backend/src
dockerfile: Dockerfile
container_name: myapp-backend
environment:
ASPNETCORE_HTTP_PORT: "https://+:7132"
ASPNETCORE_URLS: "http://+:7132"
ports:
- "7132:7132"
- "5194:5194"
restart: always
depends_on:
- myapp-db
networks:
- myapp-network
networks:
myapp-network:
volumes:
myapp-db-volume:
Код: Выделить всё
Server=myapp-db;Database=myappdb;User Id=SA;Password=mypassword;trusted_connection=false;encrypt=false
Кажется, я не могу понять, почему это происходит. Чтобы обойти это, я сначала запускал контейнер базы данных отдельно, затем запускал свой внутренний контейнер и запускал сценарий миграции вручную.
Я бы хотел не делать этого и позволить docker самому выполнить инициализацию базы данных.
Подробнее здесь: https://stackoverflow.com/questions/783 ... ith-docker
Мобильная версия