Zum Inhalt

Docker mssql Image erstellen

Ziel der Fingerübung ist ein MSSql Image zu erstellen, dass einer vordefinierten Datenbank und Schema ausgeliefert wird. Das Basisimage ist ein Developer-MSSql Image auf Linux Basis, welches von Microsoft bereitgestellt wird:

Dockerfile

FROM mcr.microsoft.com/mssql/server:2017-latest

# create directory within SQL container for database files
RUN mkdir -p /opt/mssql-scripts

# copy the database files from host to container
COPY init.sql /opt/mssql-scripts
COPY init_v1.sql /opt/mssql-scripts

# set environment variables
ENV MSSQL_SA_PASSWORD=<DeinPasswort_min_8_Zeichen_aus_sonderzahlen_groß_klein _buchstaben_und_sonderzeichen>
ENV ACCEPT_EULA=Y

# run initial scripts
RUN ( /opt/mssql/bin/sqlservr --accept-eula & ) | grep -q "Service Broker manager has started" \
    && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Ab1234567890_' -i /opt/mssql-scripts/init.sql \
    && /opt/mssql-tools/bin/sqlcmd -S localhost -d 'test_database' -U SA -P 'Ab1234567890_' -i /opt/mssql-scripts/init_v1.sql \
    && pkill sqlservr

Zu beachten: ich nutze zwei SQL Dateien. Die erste Datei ist zuständig für die Erstellung der Datenbank und evtl. für das Anlegen der User. Die zweite Datei legt das Schema an. Beim Aufruf der zweiten SQL Datei muss der Name der Zieldatenbank mit übergeben werden. Ansonsten wird das Schema in der ‘master’ Datenbank angelegt.
Diese Trennung ist einem Feature von MSSql schuldig, daß
CREATE SCHEMA dein_schema_name
am Anfang des Skripts stehen muss.

Published indatenbankdocker

Schreibe den ersten Kommentar

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.