Browse Source

Migration method changed to reduce the size of the image

pull/961/head
Atakan Özceviz 8 years ago
parent
commit
b2058277f9
  1. 15
      templates/service/database/Dockerfile
  2. 12
      templates/service/database/entrypoint.sh
  3. 9
      templates/service/docker-compose.migrations.yml

15
templates/service/database/Dockerfile

@ -1,19 +1,18 @@
FROM microsoft/dotnet:2.2-sdk-alpine AS build FROM microsoft/dotnet:2.2-sdk-alpine AS build
RUN apk add --no-cache bash
COPY . . COPY . .
WORKDIR /templates/service/host/IdentityServerHost WORKDIR /templates/service/host/IdentityServerHost
RUN dotnet restore -nowarn:msb3202,nu1503 RUN dotnet restore
RUN dotnet build --no-restore -c Release RUN dotnet ef migrations script -i -o migrations-IdentityServerHost.sql
WORKDIR /templates/service/host/MyCompanyName.MyProjectName.Host WORKDIR /templates/service/host/MyCompanyName.MyProjectName.Host
RUN dotnet restore -nowarn:msb3202,nu1503 RUN dotnet restore
RUN dotnet build --no-restore -c Release RUN dotnet ef migrations script -i -o migrations-MyProjectName.sql
FROM build AS final FROM mcr.microsoft.com/mssql-tools AS final
WORKDIR /src WORKDIR /src
COPY --from=build /templates/service/host/IdentityServerHost ./IdentityServerHost COPY --from=build /templates/service/host/IdentityServerHost/migrations-IdentityServerHost.sql migrations-IdentityServerHost.sql
COPY --from=build /templates/service/host/MyCompanyName.MyProjectName.Host ./MyCompanyName.MyProjectName.Host COPY --from=build /templates/service/host/MyCompanyName.MyProjectName.Host/migrations-MyProjectName.sql migrations-MyProjectName.sql
COPY --from=build /templates/service/database/entrypoint.sh . COPY --from=build /templates/service/database/entrypoint.sh .
RUN /bin/bash -c "sed -i $'s/\r$//' entrypoint.sh" RUN /bin/bash -c "sed -i $'s/\r$//' entrypoint.sh"
RUN chmod +x ./entrypoint.sh RUN chmod +x ./entrypoint.sh

12
templates/service/database/entrypoint.sh

@ -1,12 +1,12 @@
#!/bin/bash #!/bin/bash
cd IdentityServerHost until /opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q 'SELECT name FROM master.sys.databases'; do
export ConnectionStrings__Default=$IdentityServerConnectionString
until dotnet ef database update --no-build; do
>&2 echo "SQL Server is starting up" >&2 echo "SQL Server is starting up"
sleep 1 sleep 1
done done
export ConnectionStrings__Default=$MyProjectNameConnectionString /opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q "CREATE DATABASE [$IdentityServer_DB]"
cd MyCompanyName.MyProjectName.Host && dotnet ef database update --no-build /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

9
templates/service/docker-compose.migrations.yml

@ -1,12 +1,13 @@
version: '3.4' version: '3.4'
services: services:
migrations: migrations:
build: build:
context: ../../ context: ../../
dockerfile: templates/service/database/Dockerfile dockerfile: templates/service/database/Dockerfile
depends_on: depends_on:
- sqlserver - sqlserver
environment: environment:
- IdentityServerConnectionString=Server=sqlserver;Database=MyProjectName_Identity;Trusted_Connection=True;MultipleActiveResultSets=true;User=sa;Password=yourStrong(!)Password;Integrated Security=false - IdentityServer_DB=MyProjectName_Identity
- MyProjectNameConnectionString=Server=sqlserver;Database=MyProjectName_ModuleDb;Trusted_Connection=True;MultipleActiveResultSets=true;User=sa;Password=yourStrong(!)Password;Integrated Security=false - MyProjectName_DB=MyProjectName_ModuleDb
- SA_PASSWORD=yourStrong(!)Password

Loading…
Cancel
Save