Como executar o SQL Server no MAC usando o Docker

Armando Couto 🇧🇷
programming to live
6 min readMay 13, 2022
Macbook semi aberto com um pouco se luz sobre o teclado — SQL Server no Mac usando o Docker
Unsplash

Anos atrás, em 2017 para ser mais exato, participei de um dos eventos Connect() da Microsoft. Alguns anúncios eram muito interessantes e um deles me chamou a atenção: a adição do SQL Server para o Linux.

Na época, meu primeiro pensamento foi: “será que posso rodar isso no meu Mac?”. Caso esteja curioso, a resposta é sim, é possível utilizando o Docker.

Para os que não conhecem, o Docker é uma plataforma open source que facilita ao developer o desenvolvimento, manutenção e execução de aplicações.

O gerenciamento é especialmente facilitado, já que possibilita a separação da aplicação e de sua infraestrutura. Isso significa que, através da virtualização, haja execuções da mesma aplicação ao mesmo tempo, mas em ambientes isolados.

Por causa dessa funcionalidade, acreditei que o Docker ajudaria a executar o SQL no meu Mac, o que de fato aconteceu.

Então, no artigo de hoje, mostro como fazer isso.

Dividi o texto em sete tópicos:

  1. Instalação do Docker
  2. Parâmetros importantes do Docker
  3. Configurando o Docker
  4. Conseguindo a imagem do Docker
  5. Usando o Kinematic
  6. Está executando, e agora?
  7. Migrando uma Base de Dados SQL para o Docker

Vamos começar?

1. Instalação do Docker

Se você ainda não tem o Docker instalado na sua máquina, primeiramente baixe aqui, e siga os passos do site para instalá-lo corretamente.

2. Parâmetros importantes do Docker

Agora que você já instalou o Docker, confira alguns dos parâmetros importantes:

  • -d: Lança o container no modo daemon, para rodar em segundo plano
  • — name name_your_container: Nomeia o seu container Docker, é útil para operações com containers específicos pelo terminal.
  • -e ‘ACCEPT_EULA=Y: Altera o valor da variável de ambiente ‘ACCEPT_EULA’ para ‘Y’. Necessário para rodar o SQL Server no Linux
  • -e ‘SA_PASSWORD=P@55w0rd’: Define uma variável de ambiente para a senha do Banco de dados. Altere o valor para sua própria senha
  • -p 1433:1433: Mapeia a porta local 1433 para a porta de container 1433. Lembrando que o SQL por padrão tem suas conexões no TCP e na porta 1433
  • microsoft/mssql-server-linux: Esse parâmetro comunica ao Docker que imagem usar.

Caso queira aprofundar seus estudos, acesse os principais comandos do Docker.

3. Configurando o Docker

Para o próximo passo, será necessário aumentar a memória disponível do Docker para 4GB ou mais.

Para fazer isso:

  1. Abra o Docker e acesse a aba Preferences
  2. Aumente a memória para no mínimo 4GB
  3. Clique em Apply & Restart
Tela do Docker com três setas. A primeira aponta para “preferences”.

4. Conseguindo a imagem do Docker

Abra um terminal na sua máquina, e baixe a imagem Docker da versão mais nova do SQL Server para Linux, pelo seguinte comando de terminal:

docker pull microsoft/mssql-server-linux

Agora, lançamos uma instância da imagem Docker.

docker run -d - name name_your_container -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=P@55w0rd' -p 1433:1433 microsoft/mssql-server-linux

Chegando nesse ponto, o seu SQL Server deve estar pronto pra ação no seu Mac.

5. Usando o Kinematic

Kinematic é uma aplicação para administração de containers Docker. Na primeira vez que você clicar em Open Kinematic, vai te direcionar para o download e a instalação.

Tela do Kinematic com “Open Kinematic” selecionado.

Você pode usar o Kinematic para ver a saída dos valores dos seus containers, administração de configurações, etc.

Tela do Kinematic para ver os valores de saída dos conteineres

6. Está executando, e agora?

Calma que não acabou ainda.

Você precisa instalar o sql-cli, que é uma ferramenta de linha de comando para o SQL Server. Para usá-la, é necessário possuir o Node.js instalado em sua máquina (se ainda não está instalado, baixe aqui)

No terminal, instale o sql-cli globalmente, para poder usar em toda máquina.

npm install -g sql-cli

Em seguida, conecte em sua instância o SQL Server do Docker:

mssql -u sa -p P@55w0rd

Já pode salvar e executar os comandos do SQL Server pelo mssql>prompt. Escreva .quit e aperte Enter para sair.

7. Migrando uma Base de Dados SQL para o Docker

Ainda não tentei restaurar o banco de dados pelo backup.

Ao invés disso, escolhi escrever um banco existente e usar o sql-cli para executar um script e recriar meu banco de dados no Docker.

Assim sendo, nesta etapa do tutorial, vamos aprender a gerar os scripts e a executá-los.

7.1 — Gerando ‘scripts’

O script SQL, como o próprio nome dá a entender, é como um roteiro. É semelhante a um manual de instruções, pois compila comandos, palavras-chaves e várias outras informações que servem como guia.

Primeiro, usamos o SQL Server Management Studio para gerar os scripts por um banco de dados existente.

Clique com o botão direito no seu Banco de dados. Escolha Tasks depois selecione Generate Scripts. Pode se guiar pela captura de tela abaixo.

Tela do SQL Server Management — SQL Server no Mac

Eu escolho, geralmente, separar minha tabela e o script dos dados dos meus Views, Procedimentos armazenado e outras seções.

Tela para gerar e publicar scripts

Depois de clicar em Next, clique na opção Advanced na próxima tela, conforme a imagem a seguir:

Gerar e publicar scripts no SQL. O botão “advanced” está marcado com uma seta vermelha.

Na aba de opções avançadas, escolha as opções “Check for object existence” e “Script DROP and CREATE”.

Altere o valor de “Types of data to script” para “Schema and data”.

Selecionar as opções de “Check for object existence” e “DROP/CREATE” permite executar outra vez o mesmo script em um banco de dados existente. Isso será útil se eu quiser resetar ele de volta ao seu estado original.

Opções avançadas de script — SQL Server

Feito isso, escolha um diretório onde seus scripts serão salvos.

Quando concluir o processo, se necessário, repita os passos para ter também scripts dos seus Views, Stored Procedures, etc.

7.2 — Executando os scripts no seu SQL Server

Copie os scripts gerados acima no seu Mac, onde você pode facilmente chegar neles pelo terminal.

Abra um terminal e troque para o diretório onde estão os scripts.

Agora, conecte no seu SQL Server no Docker usando sql-cli,e tenha certeza de estar como master.

mssql> use master

Crie seu novo banco de dados.

mssql> CREATE DATABASE devdb

Mude devdb para o nome do seu banco de dados. O script gerado espera um banco de dados com o mesmo nome do já existente.

Acesse o banco de dados que acabamos de criar (mude devdb para o nome do seu banco de dados).

mssql> use devdb

Rode os scripts gerados para criar todas as tabelas e preencher elas com os dados

mssql> .run script.sql

Se for preciso, repita com o script que contém outros tipos de objetos.

Conclusão

Agora você tem uma cópia do seu Banco de Dados SQL executando no seu Mac pelo Docker. Seguindo o tutorial, você não precisará ocupar seu disco com a Máquina Virtual inteira do Windows!

Quem começou a mexer no Docker agora pode ter algumas dificuldades, o que é totalmente compreensível. Você pode aprender os comandos mais importantes para iniciantes e, assim, melhorar suas habilidades.

Se esse artigo te ajudou, considere clicar nas palmas para incentivar a produção de mais textos. Tenho outros como este, clique aqui para dar uma olhada.

Até a próxima!

--

--