DevOps - MSSQL Server no Docker (em Linux)
Autor: Fernando Anselmo | Publicado: 2016-11-16T21:08:00-02:00

Primeiro artigo da série DevOps, continuação do livro Docker que pode ser acessado através do site Academia.edu.

Essa será a primeira de uma série de publicações para a montagem de ambientes utilizando o Docker com o Ubuntu 16.10. E, pode pensar que enlouqueci, mas não, vamos realmente instalar o Banco de dados Microsoft SQL Server no Linux e ainda por cima através do Docker.


O primeiro passo é baixar a imagem oficial:
$ sudo docker pull microsoft/mssql-server-linux
O segundo e último passo é executar a imagem para criar um contêiner com o seguinte comando:

$ docker run –e 'ACCEPT_EULA=Y' –e 'SA_PASSWORD=&lt;YourStrong!Passw0rd&gt;' -p 1433:1433 -d microsoft/mssql-server-linux
Não estou brincando o banco já foi instalado e está respondendo na porta 1433. Podemos verificar que a imagem está realmente rodando com o comando:

$ docker ps -a
Podemos utilizar qualquer linguagem para testá-lo porém prefiro instalar um "Administrador" para isso, vamos então proceder mais alguns passos.

1. Entrar em modo super usuário:

$ sudo su
2. Importar do repositório público as chaves GPG:

# curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
3. Registrar o repositório Microsoft (não se preocupe com 16.04 para o Ubuntu 16.10):

# curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list &gt; /etc/apt/sources.list.d/msprod.list
4. Sair do modo super usuário:

# exit
5. Atualizar o sistema:

$ sudo apt update
6. Instalar o aplicativo e suas dependências:

$ sudo apt install odbcinst-utf16 odbcinst1debian2-utf16 unixodbc-utf16 msodbcsql mssql-tools

Testar o ambiente
Mais uma vez já poderiamos ter terminado mas aí não teria graça. Vamos testar o ambiente, digitar o seguinte comando para entrar no MSSQL-Tools:

$ sqlcmd -S localhost -U SA -P '&lt;YourStrong!Passw0rd&gt;'
Como resposta obtemos "1&gt;", significa que estamos na linha de comando do MSSQL-Tools, cada comando SQL que digitarmos é necessário terminá-lo com ";" e digitar "GO" na linha de baixo, por exemplo, ver os bancos existentes com o comando:

SELECT name FROM sys.databases;
Pressionar "ENTER" e será mostrado "2&gt;" digitar:

GO
Pressionar "ENTER". Provavelmente nada sera mostrado, pois é um banco limpo de tudo. Vamos criar uma base de dados e uma tabela, siga a sequencia, pressionando "ENTER" em cada linha:

CREATE DATABASE testedb;
GO
USE testedb;
GO
CREATE TABLE funcionario(matricula INT NOT NULL, nome NVARCHAR(50), salario NUMERIC(10,2), PRIMARY KEY(matricula));
GO
INSERT INTO funcionario VALUES (1, 'Fernando', 1200.00);
INSERT INTO funcionario VALUES (2, 'Maria', 1400.20);
INSERT INTO funcionario VALUES (3, 'Manoel', 1100.00);
INSERT INTO funcionario VALUES (4, 'Pedro', 1230.25);
GO

Podemos ver os dados através do comando:

SELECT * FROM funcionario;
GO
Sair do MSSQL-Tools com o seguinte comando:

quit
Digitar:

$ docker ps -a
Parar o servidor com o comando:

$ docker stop [CONTAINER ID]
Tentar acessar novamente o MSSQL-Tools e observar que dessa vez será mostrado um erro informando que não existe o banco ativo. Ativar o servidor novamente com o comando:

$ docker start [CONTAINER ID]
Acessar e verificar que a base testedb&nbsp;está integra e com os dados que foram inseridos corretamente.

Obrigado e até a próxima
Fernando Anselmo