Как создать соединение SQL и как создать файл .sql и сценарии миграции в Docker? - PullRequest
0 голосов
/ 31 октября 2018

Мы разрабатываем образец ПО на микросервисах. Мы застряли в SQL-соединении с докером. Как создать сценарии миграции и файл .sql, как мы можем развернуть эти сценарии в Docker. Может ли кто-нибудь дать демо и код на нем?

1 Ответ

0 голосов
/ 31 октября 2018

Так что, если ваш сервер находится за пределами докера (что является единственной разумной вещью). Вы можете сделать это с помощью файла Docker:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app

FROM microsoft/dotnet:sdk AS build
WORKDIR /src
ARG connectionString
ENV CONNECTION_STRING=$connectionString
COPY ["*********.csproj", "*********/"]
RUN dotnet restore "*********.csproj"
COPY . .
WORKDIR "/*********"
RUN dotnet build "*********" -c Release -o /app
RUN dotnet ef database update <------ HERE 

FROM build AS publish
RUN dotnet publish "*********" -c Release -o /app

FROM base AS final
ENV ASPNETCORE_ENVIRONMENT=PROD
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "*********"]

RUN dotnet ef Обновление базы данных

(если вы не используете ядро ​​.net, то мало что может измениться.)

в вашем стартапе у вас должно быть что-то вроде:

public static string ConnectionString
{
    get
    {
        if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "PROD")
        {
            return Environment.GetEnvironmentVariable("CONNECTION_STRING");
        }
        else
        {
            return @"Server=.;Database=database;Trusted_Connection=True;ConnectRetryCount=0";
        }

    }
}

public UsersDbContext CreateDbContext(string[] args)
{
    var optionsBuilder = new DbContextOptionsBuilder<UsersDbContext>();
    optionsBuilder.UseSqlServer(ConnectionString);

    return new UsersDbContext(optionsBuilder.Options);
}

внутри

public class XXXXXContextFactory : IDesignTimeDbContextFactory<XXXXXDbContext>

и в конце при запуске

- docker build -f xxxxxx/Dockerfile -t xxxxx.azurecr.io/xxxxx:latest . --build-arg connectionString="some connection string"

сборка докера должна завершить процесс миграции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...