There are a whole bunch of environment variables that can be used to configure SQL Server when run in a Docker container. You can check out the full list here.
So we could end up with a docker container run statement like this: –
docker container run -d ` --publish 15789:1433 ` --env MSSQL_PID=Developer ` --env MSSQL_SA_PASSWORD=Testing1122 ` --env ACCEPT_EULA=Y ` --env MSSQL_AGENT_ENABLED=True ` --env MSSQL_DATA_DIR=/var/opt/sqlserver/sqldata ` --env MSSQL_LOG_DIR=/var/opt/sqlserver/sqllog ` --env MSSQL_BACKUP_DIR=/var/opt/sqlserver/sqlbackups ` --name sqlcontainer1 ` mcr.microsoft.com/mssql/server:2019-CU12-ubuntu-18.04
Do we really want to be typing all that out every time we run a container? Ok, we could drop this into a script and execute that but another option is to use environment variable files.
Nice and simple, we take all the environment variables in the statement above and drop them into a file on our Docker host: –
MSSQL_PID=Developer ACCEPT_EULA=Y MSSQL_AGENT_ENABLED=True MSSQL_DATA_DIR=/var/opt/sqlserver/sqldata MSSQL_LOG_DIR=/var/opt/sqlserver/sqllog MSSQL_BACKUP_DIR=/var/opt/sqlserver/sqlbackups
And now just reference that file in the docker container run statement (I saved my file as C:Tempvar.env): –
docker container run -d ` --publish 15789:1433 ` --env MSSQL_SA_PASSWORD=Testing1122 ` --env-file C:tempvar.env ` --name sqlcontainer1 ` mcr.microsoft.com/mssql/server:2019-CU12-ubuntu-18.04
To confirm the variables have been set: –
docker exec sqlcontainer1 printenv
And there they are! We can also use multiple files referenced using the –env-file flag.
Another way of doing is (probably better?) is to use Docker Compose. If you want to learn more about compose, check out the SQL Server & Containers Guide!
Thanks for reading!