diff --git a/Dockerfile b/Dockerfile index 8b3c81f..2efd667 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/mssql/server:2019-latest +FROM mcr.microsoft.com/azure-sql-edge:latest EXPOSE 1433 LABEL "MAINTAINER" "Enrique Catalá Bañuls " @@ -14,6 +14,20 @@ COPY entrypoint.sh ./ # Since SQL Server 2019 is non-root container, we need to force this to install packages USER root + +# Install mssql-tools18 (SQL Server command-line tools) +RUN apt-get update && \ + apt-get install -y curl apt-transport-https gnupg && \ + curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ + curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ + apt-get update && \ + ACCEPT_EULA=Y apt-get install -y mssql-tools18 unixodbc-dev && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# Add mssql-tools to PATH +ENV PATH="$PATH:/opt/mssql-tools18/bin" + RUN chown -R 10001:0 setup.sh entrypoint.sh # Get to the default user diff --git a/setup.sh b/setup.sh index badbc48..87afc1a 100644 --- a/setup.sh +++ b/setup.sh @@ -14,7 +14,7 @@ while [[ $STATUS -ne 0 ]] && [[ $i -lt 60 ]]; do i=$i+1 echo "*************************************************************************" echo "Waiting for SQL Server to start (it will fail until port is opened)..." - /opt/mssql-tools/bin/sqlcmd -t 1 -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -Q "select 1" >> /dev/null + /opt/mssql-tools18/bin/sqlcmd -C -t 1 -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -Q "select 1" >> /dev/null STATUS=$? sleep 1 done @@ -28,7 +28,7 @@ fi echo "======= MSSQL SERVER STARTED ========" | tee -a ./config.log echo "*********** Preparing SQL Server instance features: Contained databases " | tee -a ./config.log -/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.instance.sql +/opt/mssql-tools18/bin/sqlcmd -C -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.instance.sql # If the wideworldimportersdw is restored, we don´t need to restore it again # @@ -40,12 +40,12 @@ echo "FORCE_ATTACH_IF_MDF_EXISTS: $FORCE_ATTACH_IF_MDF_EXISTS" | tee -a ./config if [ ! -f "$file" ] then echo "*********** Restoring databases: WideWorldImporters, Adventureworks, tpcc ..." | tee -a ./config.log - /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.restore.sql + /opt/mssql-tools18/bin/sqlcmd -C -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.restore.sql case $INCLUDE_ALL_DATABASES in 1) echo "*********** Restoring big databases: WideWorldImportersDW, AdventureworksDW, StackOverflow..." | tee -a ./config.log - /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.other_databases.restore.sql - /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.bigdatabases.restore.sql + /opt/mssql-tools18/bin/sqlcmd -C -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.other_databases.restore.sql + /opt/mssql-tools18/bin/sqlcmd -C -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.bigdatabases.restore.sql ;; *) echo "INCLUDE_ALL_DATABASES is not set; defaulting to not include all databases." | tee -a ./config.log ;; @@ -53,12 +53,12 @@ then else case $FORCE_ATTACH_IF_MDF_EXISTS in 1) echo "*********** Attaching previously restored databases..." | tee -a ./config.log - /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.attach.sql + /opt/mssql-tools18/bin/sqlcmd -C -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.attach.sql case $INCLUDE_ALL_DATABASES in 1) echo "*********** Attaching previously restored big databases..." | tee -a ./config.log - /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.other_databases.attach.sql - /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.bigdatabases.attach.sql + /opt/mssql-tools18/bin/sqlcmd -C -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.other_databases.attach.sql + /opt/mssql-tools18/bin/sqlcmd -C -S 127.0.0.1 -U sa -P $MSSQL_SA_PASSWORD -d master -i /var/opt/mssql/setup/setup.bigdatabases.attach.sql ;; *) echo "INCLUDE_ALL_DATABASES is not set; defaulting to not include all databases." | tee -a ./config.log ;;