Repositorio para levantar SQL Server 2022 Developer en Docker usando docker-compose con .env y persistencia local en la carpeta del proyecto.
Aviso de licencia: la edicion Developer es gratuita solo para desarrollo, pruebas y demos. No usar en produccion.
- Docker Engine + Docker Compose (v2 o superior)
- Puerto 1433 libre en el host
- RAM disponible (recomendado: 2 GB libres o mas)
docker-compose.yml- definicion del servicio SQL Server.env- variables de entorno locales (no compartir en publico).env.example- plantilla con valores de ejemplosql-data/- carpeta creada automaticamente para persistir datosVisual Studio Code Connect.png- captura de ejemplo de conexion
Archivo .env en la misma carpeta del docker-compose.yml:
ACCEPT_EULA=Y
MSSQL_PID=Developer
SA_PASSWORD=P@ssw0rd_Str0ng!
Reglas para SA_PASSWORD:
- Minimo 8 caracteres
- Debe incluir mayusculas, minusculas, digitos y simbolos
- Si no cumple, el contenedor se apaga
# 1) (Opcional) copiar plantilla
# cp .env.example .env
# 2) levantar en segundo plano
docker compose up -d
# 3) ver estado
docker compose ps
# 4) ver logs (hasta ver "Server is listening on ... 1433")
docker logs -f mssqlserver-developer-editionLos datos se guardan en ./sql-data (relativo al docker-compose.yml) y se mapean a /var/opt/mssql dentro del contenedor.
- Para borrar TODO (contenedor + datos):
docker compose down
# eliminar carpeta de datos (cuidado)
# rmdir /s /q sql-data
docker compose downno elimina los datos si la carpetasql-datapermanece.
Puedes conectarte desde Azure Data Studio o SSMS con:
- Servidor:
localhost(o127.0.0.1) - Puerto:
1433 - Autenticacion: SQL Login
- Usuario:
sa - Password: el valor de
SA_PASSWORD - Encrypt: Optional / Trust server certificate
ADO.NET (.NET)
Server=localhost,1433;Database=master;User Id=sa;Password=P@ssw0rd_Str0ng!;TrustServerCertificate=True;
ODBC
Driver={ODBC Driver 18 for SQL Server};Server=localhost,1433;Database=master;Uid=sa;Pwd=P@ssw0rd_Str0ng!;TrustServerCertificate=Yes;
JDBC
jdbc:sqlserver://localhost:1433;databaseName=master;user=sa;password=P@ssw0rd_Str0ng!;trustServerCertificate=true;
docker exec -it mssqlserver-developer-edition /opt/mssql-tools/bin/sqlcmd \
-S localhost -U sa -P 'P@ssw0rd_Str0ng!' -Q "SELECT @@VERSION;"docker exec -it mssqlserver-developer-edition /opt/mssql-tools/bin/sqlcmd \
-S localhost -U sa -P 'P@ssw0rd_Str0ng!' \
-Q "IF DB_ID('Demo') IS NULL CREATE DATABASE Demo;"ALTER LOGIN sa WITH PASSWORD = 'TuNuev@Clave2025!';# detener
docker compose stop
# iniciar nuevamente
docker compose start
# apagar y quitar contenedor (datos permanecen)
docker compose down- Respaldar tus bases (buena practica)
- Traer la ultima imagen
- Recrear el contenedor
docker pull mcr.microsoft.com/mssql/server:2022-latest
docker compose down
docker compose up -d- El contenedor se apaga al iniciar: revisa
docker logs mssqlserver-developer-edition. Casi siempre es contrasena invalida. - No conecta desde el host: revisa que el puerto 1433 no este ocupado y que el firewall permita la entrada.
- Permisos en archivos: asegurate de que Docker tenga permisos de lectura/escritura en
./sql-data.- En Linux, si el contenedor corre como usuario
mssql(UID 10001) y ves errores de permisos:sudo mkdir -p sql-data sudo chown -R 10001:0 sql-data sudo chmod -R g+rwx sql-data
- En Linux, si el contenedor corre como usuario
Este ejemplo expone sa y su contrasena en texto claro para fines didacticos.
Recomendaciones:
- No compartas tu
.env - Cambia la contrasena despues del primer arranque
- Restringe el puerto segun el entorno (firewall/redes de Docker)
Usando la extension de SQL Server (mssql)
- Imagen oficial:
mcr.microsoft.com/mssql/server:2022-latest - Edicion: Developer (solo dev/test/demos)
- Extension SQL Server (mssql)
