Como executar o SQL Server no MAC usando o Docker
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:
- Instalação do Docker
- Parâmetros importantes do Docker
- Configurando o Docker
- Conseguindo a imagem do Docker
- Usando o Kinematic
- Está executando, e agora?
- 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:
- Abra o Docker e acesse a aba Preferences
- Aumente a memória para no mínimo 4GB
- Clique em Apply & Restart
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.
Você pode usar o Kinematic para ver a saída dos valores dos seus containers, administração de configurações, etc.
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.
Eu escolho, geralmente, separar minha tabela e o script dos dados dos meus Views, Procedimentos armazenado e outras seções.
Depois de clicar em Next, clique na opção Advanced na próxima tela, conforme a imagem a seguir:
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.
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!