Невозможно передать данные с помощью DockerC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно передать данные с помощью Docker

Сообщение Anonymous »

Я пытаюсь использовать docker-compose для развертывания веб-API ASP.NET Core и экземпляра SQL Server, но я также хочу заполнить свою базу данных при ее запуске.
Для этого мне нужно, чтобы 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"]
Мой файл компоновки Docker, служба .NET Core и SQL Server:

Код: Выделить всё

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:
Моя строка подключения .NET выглядит следующим образом: я использую имя контейнера для своего сервера:

Код: Выделить всё

Server=myapp-db;Database=myappdb;User Id=SA;Password=mypassword;trusted_connection=false;encrypt=false
Я использую правильные учетные данные пользователя и пароль. Я пробовал использовать
Кажется, я не могу понять, почему это происходит. Чтобы обойти это, я сначала запускал контейнер базы данных отдельно, затем запускал свой внутренний контейнер и запускал сценарий миграции вручную.
Я бы хотел не делать этого и позволить docker самому выполнить инициализацию базы данных.

Подробнее здесь: https://stackoverflow.com/questions/783 ... ith-docker
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»