Dopo aver creato il docker-compose per SQL Server, ed avere individuato i parametri che possono essere utilizzanti (anche a linea di comando), è arrivato il momento di creare il docker-compose finale, che comprende anche l’applicazione.
Perchè usare docker-compose? Perchè possiamo raggruppare tutta la configurazione all’interno di un unico file e creare l’infrastruttura direttamente tramite un yaml file.
Tutto questo ci permette di avere un infrastruttura stabile e soprattutto riutilizzabile / ricreabile in contesti differenti.
In questo post non ci addrentremo nell’ambito di orchestratori come kubernetes che abbiamo già descritto in qualche post precedenti.
Al terminre del primo post abbiamo creato il Docker file utilizzato per la generazione dell’applicazione.
Ora non ci resta che integrarlo partendo da un semplice template del docker-compose:
version: "3.4"
services:
api:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:80"
depends_on:
- db
db:
image: "mcr.microsoft.com/mssql/server:2022-latest"
ports:
- "1433:1433"
environment:
SA_PASSWORD: "S3cur3P@ssW0rd!"
ACCEPT_EULA: "Y"Con questo file vengono definiti due servizi distinti, uno relativo all’app ed uno relativo al db.
In particolare, per quanto riguarda la fase di generazione del dell’applicazione, la build viene relegata all’utilizzo del DockerFile che abbiamo generato in precedenza (con tutti gli step che abbiamo descritto nel primo post).
In questo caso l’esposizione della porta verso l’esterno è la 8080 (80 interna al container) e viene impostata la dipendenza con il secondo servizio, quello del database.
In questo caso viene utilizzata l’immagine di Microsoft SQL server 2022, e non viene definita la mappatura dello storage. Ovviamente, si tratta di un template, che dovrà necessariamente essere modificato per mantenere lo stato tra riavvii differenti.
In questo caso viene esposta la porta 1433 (porta predefinita per SQL Server) e viene impostata la password dell’utente SA.
E con questa parte abbiamo concluso l’impostazione dell’infrastruttura per lo sviluppo in locale tramite container di un applicazione web api .net core.
Nel prossimo post concluderemo con le configurazioni dell’applicazione per poter interfacciarsi con Microsoft SQL Server.