In questo secondo post riprendiamo la configurazione dell’ambiente di sviluppo, impostando il container relativo a SQL Server.
In questo caso abbiamo già a disposizione su docker hub un immagine pronta per essere utilizzata, anche se necessita di alcuni steps di configurazione che andremo ad affrontare.
Per prima cosa è necessario individuare l’immagine che dovrà essere utilizzata. Per esempio è posssibile scaricare l’immagine di Sql Server basata su ubuntu con il comando:
docker pull mcr.microsoft.com/mssql/server
E’ anche possibile scaricare versioni differenti come per esempio la versione 2019 con il comando:
docker pull mcr.microsoft.com/mssql/server:2019-latest
Una volta scaricata l’immagine in locale è possibile eseguirla passando una serie di parametri:
- –e “ACCEPT_EULA=Y”: Utilizzata per accettare l’End-User License Agreement terms
- -e “SA_PASSWORD=Adminxyz22#”: utilizzato per impostare la password dell’ utente SA.
- -p 1433:1433: La porta standard usata da SQL server. Si tratta della mappatura tra porte che deve essere utilizzata per la comunicazione tra interno ed esterno del container
- –name: il nome da associare all’immagine di docker. Se non viene specificato verrà creata in maniera randomica da docker
- –hostname: l’hostname che verrà assegnato all’host di sql server. Se non viene specificato, verrà utilizzato un nome generato random
A questo punto siamo pronti per l’esecuzione del container con il comando:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Adminxyz22#" -p 1433:1433 --name sql1 --hostname sql1 -d mcr.microsoft.com/mssql/server:2019-latest
In questo caso viene impostata la password per l’utente SA Adminxyz123, viene esposta la porta standard, viene accettata la End-User License Agreement, ed il nome dell’host viene impostato a sql1.
A questo punto sarà possibile utilizzare un client SQL per poter testare l’accesso al container appena eseguito.
Non è stato però definito un volume dove i dati di SQL verranno salvati.
E’ possibile passare il volume direttamente come parametro da linea di comando, oppure definirlo all’interno di docker-compose.
In particolare quello che è necessario indicare sono i percorsi per:
- I dati: -v <host directory>/data:/var/opt/mssql/data
- I log dei dati: -v <host directory>/log:/var/opt/mssql/log
- Secrets utenti: -v <host directory>/secrets:/var/opt/mssql/secrets
Utilizzando i parametri precedenti è possibile impostare la persistenza dei dati per i db e i secrets.
La pagina di riferimento per la configurazione di container con SQL server è raggiungibile a questo link.
Una tecnica alternativa è quello della creazione di un docker-compose.
version: '3.2'
services:
mssql:
image: mcr.microsoft.com/mssql/server:2019-latest
restart: unless-stopped
ports:
- "1433:1433"
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=secretpassword
- TZ=Europe/Berlin
- MSSQL_PID=Express
volumes:
- "./data/:/var/opt/mssql/data/"
- "./log/:/var/opt/mssql/log/"
- "./secrets/:/var/opt/mssql/secrets/"Dovrebbe essere chiara l’impostazione del docker compose precedente, perchè ricalca in maniera piuttosto precisa i parametri da inviare a linea di comando.