Restoring mssql db from backup using docker-compose

pull/847/head
Atakan Özceviz 7 years ago
parent 7920b62224
commit 98f7555a84

@ -0,0 +1,14 @@
FROM alpine AS unzip
WORKDIR /src
RUN apk add --no-cache unzip
COPY /samples/MicroserviceDemo/databases/MsDemo_Identity.zip .
COPY /samples/MicroserviceDemo/databases/MsDemo_ProductManagement.zip .
RUN unzip -q "*.zip"
FROM mcr.microsoft.com/mssql-tools AS restore
WORKDIR /src
COPY --from=unzip /src/MsDemo_Identity.bak .
COPY --from=unzip /src/MsDemo_ProductManagement.bak .
COPY /samples/MicroserviceDemo/databases/restore/entrypoint.sh .
RUN chmod +x ./entrypoint.sh
ENTRYPOINT [ "./entrypoint.sh" ]

@ -0,0 +1,29 @@
#!/bin/bash
set -e
mkdir -p /var/opt/mssql/backup
mv /src/MsDemo_Identity.bak /var/opt/mssql/backup
mv /src/MsDemo_ProductManagement.bak /var/opt/mssql/backup
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
/opt/mssql-tools/bin/sqlcmd -S sqlserver \
-U SA -P $SA_PASSWORD \
-Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/MsDemo_Identity.bak"' \
| tr -s ' ' | cut -d ' ' -f 1-2
/opt/mssql-tools/bin/sqlcmd -S sqlserver \
-U SA -P $SA_PASSWORD \
-Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/MsDemo_ProductManagement.bak"' \
| tr -s ' ' | cut -d ' ' -f 1-2
/opt/mssql-tools/bin/sqlcmd \
-S sqlserver -U SA -P $SA_PASSWORD \
-Q 'RESTORE DATABASE MsDemo_Identity FROM DISK = "/var/opt/mssql/backup/MsDemo_Identity.bak" WITH MOVE "MsDemo_Identity" TO "/var/opt/mssql/data/MsDemo_Identity.mdf", MOVE "MsDemo_Identity_log" TO "/var/opt/mssql/data/MsDemo_Identity_log.ldf"'
/opt/mssql-tools/bin/sqlcmd \
-S sqlserver -U SA -P $SA_PASSWORD \
-Q 'RESTORE DATABASE MsDemo_ProductManagement FROM DISK = "/var/opt/mssql/backup/MsDemo_ProductManagement.bak" WITH MOVE "MsDemo_ProductManagement" TO "/var/opt/mssql/data/MsDemo_ProductManagement.mdf", MOVE "MsDemo_ProductManagement_log" TO "/var/opt/mssql/data/MsDemo_ProductManagement_log.ldf"'

@ -15,3 +15,15 @@ services:
dockerfile: samples/MicroserviceDemo/databases/Dockerfile
depends_on:
- sqlserver
restore-database:
image: 'microservice-demo/restore-database:${TAG:-latest}'
build:
context: ../..
dockerfile: samples/MicroserviceDemo/databases/restore/Dockerfile
volumes:
- dbdata:/var/opt/mssql
environment:
- SA_PASSWORD=yourStrong(!)Password
depends_on:
- sqlserver

Loading…
Cancel
Save