Docker Compose
Compose o que é?¶
O docker compose é uma ferramenta desenvolvida para ajudar a definir e compartilhar aplicativos de vários contêineres. A grande vantagem de usar o Compose é que você pode definir todos os aplicativos em um arquivo, mantê-la na raiz do repositório do seu projeto (agora com controle de versão) e permitir que outra pessoa contribua facilmente para o seu projeto.
Alguém precisaria apenas clonar seu repositório e iniciar o aplicativo de composição. Na verdade, você pode ver alguns projetos no GitHub/GitLab fazendo exatamente isso agora.
O arquivo de definição do Docker Compose é o local onde é especificado todo o ambiente (rede, volume e serviços), ele é escrito seguindo o formato YAML. Esse arquivo por padrão tem como nome docker-compose.yml.
O que é o YAML?¶
YAML é uma linguagem de serialização de dados que é frequentemente usada para gravar arquivos de configuração. Dependendo de quem você pergunta, YAML significa ainda outra linguagem de marcação ou YAML não é uma linguagem de marcação (um acrônimo recursivo), que enfatiza que YAML é para dados, não documentos.
YAML é uma linguagem de programação popular porque é legível e fácil de entender. Também pode ser usado em conjunto com outras linguagens de programação.
Instalando o Docker-Compose¶
- No linux, basta seguir a documentação
- Se houve instalação via Snap ou Flatpak, o docker compose precisa usar a mesma via
- Após a instalação
Anatomia do docker-compose.yml¶
O padrão YAML utiliza a indentação como separador dos blocos de códigos das definições, por conta disso o uso da indentação é um fator muito importante, ou seja, caso não a utilize corretamente, o docker-compose falhará em sua execução.
Cada linha desse arquivo pode ser definida com uma chave valor ou uma lista. Nesse caso, vamos usar a imagem que criamos:
- Crie uma pasta
- Crie um arquivo chamado docker-compose.yml na pasta
- Copiei e cole:
Abra o terminal na pasta, que está o arquivo docker-compose.yml e execute:
Ilustração usando o docker-compose up
Vá em localhost:5000 para verificar.
Ai está a mágica do compose, com um simples documento yml, podemos configurar nosso contêineres para rodar com um simples comando e para finalizar:
Vou deixar a documentação da docker para todas as possibilidades da estrutura docker github é importante ler, não fique preocupado com todas as especificações, geralmente com algumas é o suficiente para subir o contêiner a partir do .yml.
Pare de fazer confusão com o Docker Compose
Vamos brincar um pouco com o compose¶
Agora que você entendeu um pouco sobre o compose, vou deixar alguns exemplos de arquivos docker-compose.yml.
version: "1"
services:
db:
image: mysql:8.0-oracle
restart: always
environment:
MYSQL_DATABASE: 'db'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
ports:
- '3306:3306'
expose:
- '3306'
volumes:
- my-db:/var/lib/mysql
volumes:
my-db:
- Use um editor sql de sua preferencia e faça a conexão.
version: '1'
services:
postgres-compose:
image: postgres:14.-alpine
restart: always
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- '5432:5432'
volumes:
- db:/var/lib/postgresql/data
volumes:
db:
driver: local
- Use um editor sql de sua preferencia e faça a conexão.
version: '1'
services:
postgres-compose:
image: postgres:14.2-alpine
environment:
POSTGRES_USERNAME: "postgres"
POSTGRES_PASSWORD: "postgres"
ports:
- "5432:5432"
volumes:
- db:/var/lib/postgresql/data
networks:
- postgres-compose-network
pgadmin-compose:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: "qualquer@email.com"
PGADMIN_DEFAULT_PASSWORD: "postgres"
ports:
- "1515:80"
depends_on:
- postgres-compose
networks:
- postgres-compose-network
volumes:
db:
driver: local
networks:
postgres-compose-network:
driver: bridge
- Vá no localhost:1515
- login: qualquer@email.com
- Senha: postgres
- Pronto mais uma conexão bem sucedida
Além disso, recomendo verificar esse repositório da docker com múltiplos exemplos awesome-compose
Tente bastante, repita cada passo, crie suas variações.