scripts/start-mssql-server.bash (20 lines of code) (raw):
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
#!/bin/bash
DOCKER_SQL_PASS=$1
CERT_DIR=~/container/customerdb
# Create directory to store certificate
mkdir -p $CERT_DIR
# Create self-signed certificate.
openssl req -x509 -nodes -newkey rsa:2048 -subj '/CN=127.0.0.1' -keyout $CERT_DIR/mssql.key -out $CERT_DIR/mssql.pem -days 365
echo "Self-signed certificate created successfully."
# Assign read permissions to all.
chmod 555 $CERT_DIR/mssql.pem
chmod 555 $CERT_DIR/mssql.key
echo "Permissions modified successfully."
# Create mssql.conf file with the desired tlscert properties.
echo "[network]" >> $CERT_DIR/mssql.conf
echo "tlscert = /var/opt/mssql/mssql.pem" >> $CERT_DIR/mssql.conf
echo "tlskey = /var/opt/mssql/mssql.key" >> $CERT_DIR/mssql.conf
echo "tlsprotocols = 1.2" >> $CERT_DIR/mssql.conf
echo "forceencryption = 1" >> $CERT_DIR/mssql.conf
cat $CERT_DIR/mssql.conf
# Start mssql-server by volume mounting the cert, key and conf files.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=$DOCKER_SQL_PASS" -p 1433:1433 --name customerdb -h customerdb -v $CERT_DIR/mssql.conf:/var/opt/mssql/mssql.conf -v $CERT_DIR/mssql.pem:/var/opt/mssql/mssql.pem -v $CERT_DIR/mssql.key:/var/opt/mssql/mssql.key -d mcr.microsoft.com/mssql/server:2019-latest
sleep 30
docker logs customerdb
# Install certificate as trusted for the client connection to succeed.
mv $CERT_DIR/mssql.pem $CERT_DIR/mssql.crt
sudo cp $CERT_DIR/mssql.crt /usr/local/share/ca-certificates
sudo update-ca-certificates --fresh