Pare de instalar bancos de dados
Tags: docker, database, backend, braziliandevs
Published: 2024-03-16 04:31:22

Sim, pare de usar bancos de dados instalados na raiz do seu sistema, para melhor gerenciamento, use-os com o Docker. Neste artigo irei mostrar como executar e gerenciar máquinas virtuais de três conhecidos bancos de dados e usa-los de forma local.

---

## O que é o Docker?

O Docker é um software que gera a implantação de aplicativos em maquinas virtuais (containers), permitindo o uso desse, em diferentes ambientes complexos. No Docker, conteinerizar um sistema, permite que o mesmo seja usado em diversos ambientes, poupando o usuário de resolver problemas de compatibilidade, dando a possibilidade do uso padronizado no Windows, no Mac OS e no Linux, pois o mesmo aplicativo é sempre executado da mesma forma.

## Raiz vs Docker

Na raiz o usuário precisa instalar uma versão especifica do banco desejado de forma padrão, deixando o ambiente local engessado, podendo causar um problema grande caso o mesmo necessite de uma versão diferente do SGBD em algum outro projeto.

Já com o Docker o mesmo SGBD de versões diferentes podem rodar cada um em um container especifico, facilitando a troca da versão quando necessária. Acredite, isso facilita muito e evita a dor de cabeça de ter que desinstalar uma versão do banco para instalar uma outra.

## A prática

Se você já tem um banco instalado na sua raiz não precisa desinstala-lo se não quiser, só na hora de gerar seu container, basta mudar a porta local no comando, o pré requisito para este artigo é simples, tenha o [Docker](https://www.docker.com/) instalado na sua máquina.

Antes de qualquer comando precisamos aprender um pouco sobre a composição de um comando básico para rodar um container.

Para transformar uma imagem num container precisamos apenas rodar:

```bash
docker run [nome da imagem]:[versao da imagem]
```

Entre o comando e o nome da imagem, existem flags importantes que são muito usadas para melhorar ainda mais a montagem da VM.

- **--name [nome do container]**: cria um nome personalizado para o container;
- **-e [variavel de ambiente]=[valor]**: seta uma variável de ambiente no sistema;
- **-p [porta local]:[porta padrão do container]**: cria uma ponte entre a porta padrão do container, com uma porta local livre;
- **-d**: essa flag indica que o container irá rodar em segundo plano;

### MySQL

Vamos para o comando que roda o container para o MySQL, um dos bancos mais populares, Para isso, basta rodar o comando:

```bash
docker run --name mysql-latest -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql:latest
```

Com esse comando, é criado um container onde, startado, pode ser acessado pelo endereço, _mysql://localhost:3306_.

### PostgreSQL

Vamos para o comando que roda o container para o PostgreSQL, banco de dados Open Source muito popular, para isso, basta rodar o comando:

```bash
docker run --name postgres-latest -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword -d postgres:latest
```

Com esse comando é criado um container onde, startado, pode ser acessado pelo endereço, _postgres://localhost:5432_.

### MongoDB

Vamos agora para o MongoDB, que diferente dos últimos, é um banco de dados não relacional orientado a documentos, para isso, basta rodar o comando:

```bash
docker run --name mongo-latest -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=mysecretpassword -d mongo:latest
```

Com esse comando, é criado um container onde, startado, pode ser acessado pelo endereço, _mongodb://localhost:27017_.

Os containers startados, podem ser vistos em `docker ps`.

## Conclusão

Neste artigo vimos uma forma simples de usar os bancos mais usados hoje em dia com o Docker, virtualizando os mesmos, e facilitando o dia a dia na hora de desenvolver ou manter seus projetos, esta ferramenta de virtualização, não faz esse tipo de processo somente com bancos de dados, mas ele gera muitas possibilidades com todo e qualquer tipo de projeto, basta pesquisar na ferramenta [Docker Hub](https://hub.docker.com/), essa plataforma consiste em um banco de imagens para o Docker, com diversas ferramentas e apps essenciais para nossa área.