Como criar um banco de dados mariaDb com docker
Tags: sql, docker, beginners, webdev
Published: 2022-06-02 01:02:20

## Em quais situações utiliza-se Docker para banco de dados ?

Neste post, iremos demonstrar passo a passo como criar um banco de dados mariaDb utilizando docker.
Na grande maioria dos casos, não é recomendado a conteinerização de bancos de dados, por diversos motivos, como:

- Não é necessário um escalonamento automático da grande maioria dos bancos de dados,

- Apesar das recentes evoluções do Docker, o mesmo ainda não lida bem com as cargas de trabalho oriundas das consultas e inserções dos bancos de dados,

- Caso não seja configurado um volume em host (isto é, fora do container) e o mesmo for excluído, os dados armazenados no mesmo serão destruídos,

- Existem serviços específicos que lidam de uma forma muito melhor com banco de dados, como o RDS da AWS, diminuindo a complexidade do gerenciamento dos bancos que muitos devs sentem dificuldade.

Então, por qual motivo a criação de bancos de dados em docker seria interessante? Simples, a prática é muito boa para ambientes de **desenvolvimento**. Criando um container em docker, é removida a complexidade de gerenciamento da mesma facilitando muito o processo de desenvolvimento local.

## Como criar um banco de dados em container

Inicialmente, é necessário que tenhamos o docker e o docker compose instalados, caso não tenha, siga o passo a passo da [documentação](https://docs.docker.com/engine/install/) de acordo com o seu sistema operacional.

Com o Docker instalado, iremos criar um arquivo chamado docker-compose.yml para parametrizarmos a criação do Docker do banco facilitando a criação da imagem e do container. Segue um exemplo do arquivo yml utilizando uma imagem mariaDb:

```
version: '3.4'

services:
  mariadb:
    image: mariadb:10.2
    environment:
      MYSQL_ROOT_PASSWORD: 'mypassword'
      MYSQL_DATABASE: 'mydatabasename'
      MYSQL_USER: 'mydatabaseuser'
      MYSQL_PASSWORD: 'mydatabasepassword'
    ports:
      - 3306:3306

```

Com isto, temos um arquivo yml que irá criar uma instância **Mariadb**, utilizando a imagem **10.2**, com as credenciais configuradas no **enviroment** acessado pela porta **3306**.

Após a criação do arquivo, acesse através do terminal o diretório do mesmo e rode o comando: 

```
docker-compose up
```

Na primeira criação de imagem do Docker, o mesmo fará o download da imagem utilizada.

Utilizando outro terminal (o container ficará rodando neste terminal), utilize o seguinte comando para verificar se o container está ativo:

```
docker ps
```

O retorno esperado é algo similar a isso, que traz diversas informaçoes a respeito do seu container:

![Container Database](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5h2ucsl4j029gynwzs9w.png)

## Acessando a sua base de dados

Agora que o container está ativo, utilizaremos alguma ferramenta de banco de dados para acessá-lo. Recomendo pessoalmente a utilização do [Dbeaver](https://dbeaver.io/download/) mas fique a vontade para utilizar qualquer outro.

Entrando no Dbeaver, vamos em nova conexão (canto esquerdo superior), e selecionamos MariaDb


![Select database](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0bwkaig4luf27j6l0ju5.png)

Nas credenciais, preenchemos o **host** como 'localhost' e **port** como '3306'. Em **Database**, **Username** e **Password**, preenchemos conforme o arquivo docker-compose.yml de configuração da base:


![Database Credentials](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jhxe4i0jh8mm37h6xuug.png)

Ao clicar em **Test connection**, espera-se:

![Connection sucessfull](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a3ml2w78qb56iin11nkq.png)

Por fim, agora clicamos em **Finish** e nosso banco de dados está configurado e conectado em uma ferramenta para visualização e manipulação de dados. Caso deseje conectar em alguma aplicação, utilize as credencias do arquivo compose.