Ejecutar SQL Server en Docker en Apple M1

Hace ya algún tiempo te conté cómo podías usar SQL Server en Mac gracias a Docker. Sin embargo, hace poco llegó mi nuevo MacBook Pro a casa y cuando necesité generar un nuevo contenedor con esta base de datos:

# Create local database on Docker
docker run \
-e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=Password1!' \
-e 'MSSQL_PID=Express' \
--name sqlserver \
-p 1433:1433 -d mcr.microsoft.com/mssql/server:latest

Me encontré con lo siguiente:

La imagen de SQL Server da un warning y no arranca en M1

De hecho, si accedes a la interfaz de Docker Desktop verás un mensaje como este:

Docker Desktop muestra el contenedor parado y con el warning

Por ahora lo que podemos hacer es uso de esta otra imagen, Azure SQL Edge, que es una versión optimizada para entornos IoT. Para usarla, he ejecutado lo siguientes parámetros.

#Create a network
docker network create sqlserver-vnet
#Create a container with Azure SQL Edge
docker run \
--name azuresqledge \
--network sqlserver-vnet \
--cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' \
-e 'MSSQL_SA_PASSWORD=Password1!' \
 -v mssqlserver_volume:/var/opt/mssql \
-p 1433:1433 \
-d mcr.microsoft.com/azure-sql-edge
#Create a database
docker run -it --network sqlserver-vnet mcr.microsoft.com/mssql-tools
sqlcmd -S azuresqledge -U SA -P 'Password1!' -Q 'CREATE DATABASE [heroes]'

Como esta imagen no trae consigo la herramienta sqlcmd, como si ocurre en la anterior, me he creado una red donde he incluido mi servidor con Azure SQL Edge, y luego he añadido, dentro de la misma red, otro contenedor con la imagen mssql-tools, al que me atacho nada más crearlo, y ejecuto los comandos que crea oportunos, en este caso crear una base de datos llamada heroes. Si bien este segundo contenedor también da el mismo warning, si que es capaz de ejecutarse y nos permite lanzar los comandos.

Espero que sea de utilidad.

¡Saludos!

Si quieres seguir aprendiendo sobre contenedores, tienes una lista de vídeos en mi canal de YouTube 👇🏻

1 Comment

  1. J M Cibertec abril 1, 2022 at 9:52 pm

    que cliente de BD usas, tengo problemas con el Datagrip. Estoy usando el mismo sqlcmd pero es super incomodo.

    Reply

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.