diff --git a/templates/service/database/Dockerfile b/templates/service/database/Dockerfile index 74bbe2c820..c5e3bcb0c1 100644 --- a/templates/service/database/Dockerfile +++ b/templates/service/database/Dockerfile @@ -1,19 +1,18 @@ FROM microsoft/dotnet:2.2-sdk-alpine AS build -RUN apk add --no-cache bash COPY . . WORKDIR /templates/service/host/IdentityServerHost -RUN dotnet restore -nowarn:msb3202,nu1503 -RUN dotnet build --no-restore -c Release +RUN dotnet restore +RUN dotnet ef migrations script -i -o migrations-IdentityServerHost.sql WORKDIR /templates/service/host/MyCompanyName.MyProjectName.Host -RUN dotnet restore -nowarn:msb3202,nu1503 -RUN dotnet build --no-restore -c Release +RUN dotnet restore +RUN dotnet ef migrations script -i -o migrations-MyProjectName.sql -FROM build AS final +FROM mcr.microsoft.com/mssql-tools AS final WORKDIR /src -COPY --from=build /templates/service/host/IdentityServerHost ./IdentityServerHost -COPY --from=build /templates/service/host/MyCompanyName.MyProjectName.Host ./MyCompanyName.MyProjectName.Host +COPY --from=build /templates/service/host/IdentityServerHost/migrations-IdentityServerHost.sql migrations-IdentityServerHost.sql +COPY --from=build /templates/service/host/MyCompanyName.MyProjectName.Host/migrations-MyProjectName.sql migrations-MyProjectName.sql COPY --from=build /templates/service/database/entrypoint.sh . RUN /bin/bash -c "sed -i $'s/\r$//' entrypoint.sh" RUN chmod +x ./entrypoint.sh diff --git a/templates/service/database/entrypoint.sh b/templates/service/database/entrypoint.sh index 80f1b43dbc..353c7e1dc0 100644 --- a/templates/service/database/entrypoint.sh +++ b/templates/service/database/entrypoint.sh @@ -1,12 +1,12 @@ #!/bin/bash -cd IdentityServerHost -export ConnectionStrings__Default=$IdentityServerConnectionString - -until dotnet ef database update --no-build; do +until /opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q 'SELECT name FROM master.sys.databases'; do >&2 echo "SQL Server is starting up" sleep 1 done -export ConnectionStrings__Default=$MyProjectNameConnectionString -cd MyCompanyName.MyProjectName.Host && dotnet ef database update --no-build \ No newline at end of file +/opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q "CREATE DATABASE [$IdentityServer_DB]" +/opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q "CREATE DATABASE [$MyProjectName_DB]" + +/opt/mssql-tools/bin/sqlcmd -d $IdentityServer_DB -S sqlserver -U sa -P $SA_PASSWORD -i migrations-IdentityServerHost.sql +/opt/mssql-tools/bin/sqlcmd -d $MyProjectName_DB -S sqlserver -U sa -P $SA_PASSWORD -i migrations-MyProjectName.sql \ No newline at end of file diff --git a/templates/service/docker-compose.migrations.yml b/templates/service/docker-compose.migrations.yml index 33d32f8faf..e2937e32c6 100644 --- a/templates/service/docker-compose.migrations.yml +++ b/templates/service/docker-compose.migrations.yml @@ -1,12 +1,13 @@ version: '3.4' -services: +services: migrations: build: context: ../../ - dockerfile: templates/service/database/Dockerfile + dockerfile: templates/service/database/Dockerfile depends_on: - sqlserver environment: - - IdentityServerConnectionString=Server=sqlserver;Database=MyProjectName_Identity;Trusted_Connection=True;MultipleActiveResultSets=true;User=sa;Password=yourStrong(!)Password;Integrated Security=false - - MyProjectNameConnectionString=Server=sqlserver;Database=MyProjectName_ModuleDb;Trusted_Connection=True;MultipleActiveResultSets=true;User=sa;Password=yourStrong(!)Password;Integrated Security=false + - IdentityServer_DB=MyProjectName_Identity + - MyProjectName_DB=MyProjectName_ModuleDb + - SA_PASSWORD=yourStrong(!)Password