Docker Compose
Compose é uma ferramenta escrita em Python para definir e rodar aplicações multi-contêineres Docker. Através do Compose, você define a configuração dos serviços da sua aplicação. Em um arquivo yml, é descrita a configuração de cada um dos serviços, bem como o relacionamento entre eles. Através de um comando, você pode criar, atualizar ou remover todos os serviços.
Instalação via pip
Instale o pacote pip:
$ sudo apt-get -y install python-pip
Instale o pacote docker-compose
$ sudo pip install docker-compose
Para testar a instalação, verifique a versão:
$ docker-compose -v
Você verá algo como:
docker-compose version 1.16.1, build 6d1ac219
Arquivo YML
Para este exemplo, criaremos uma aplicação blog composta de 2 serviços:
- Servidor web: ghost (Ghost, Site oficial)
- Banco de dados: ghost-db (Mariadb, Site oficial)
Crie um diretório chamado blog para armazenar a configuração:
$ mkdir blog
$ cd blog
Crie um arquivo chamado docker-compose.yml com o seguinte conteúdo:
version: '2'
services:
ghost:
image: ghost:1-alpine
ports:
- 2368:2368
restart: always
environment:
database__client: mysql
database__connection__host: "ghost-db"
database__connection__user: "ghostuser"
database__connection__password: "pass"
database__connection__database: "ghostdb"
links:
- ghost-db:ghost-db
depends_on:
- ghost-db
ghost-db:
image: mariadb:10.3
ports:
- 3306:3306
restart: always
environment:
MYSQL_DATABASE: "ghostdb"
MYSQL_PASSWORD: "pass"
MYSQL_RANDOM_ROOT_PASSWORD: 'true'
MYSQL_USER: "ghostuser"
Detalhando o arquivo docker-compose.yml
- version: versão do docker-compose
- services: descrição dos serviços
- ghost
- ghost-db
- image: imagem utilizada pelo serviço
- ports: porta em que o serviço executará (lado esquerdo: host, lado direito: contêiner)
- restart: configuração de reinicialização do serviço
- environment: variáveis de ambiente dentro do contêiner
- links: link um contêiner em um outro serviço através do apelido fornecido
Comandos básicos
Para os exemplos abaixo, os comandos foram executados no diretório em que se encontra o arquivo docker-compose.yml:
Criar a aplicação descrita no arquivo docker-compose.yml, a tela exibirá o log:
docker-compose up
Criar a aplicação em backgroup (-d Detached mode)
docker-compose up -d
Visualizar os logs:
$ docker-compose logs
Visualizar os logs e travar e tela neles:
$ docker-compose logs -f
Para visualizar a stack:
$ docker-compose ps
Se tudo ocorreu como esperado, você visualizará algo como:
Name | Command | State | Ports |
---|---|---|---|
blog_ghost-db_1 | docker-entrypoint.sh mysqld | Up | 0.0.0.0:3306->3306/tcp |
blog_ghost_1 | docker-entrypoint.sh node,... | Uo | 0.0.0.0:2368->2368/tcp |
- O servidor web pode ser acessado no navegador no seguinte endereço: http://localhost:2368
- O servidor de banco de dados está acessível na porta 3306
Remover os contêiners da aplicação:
$ docker-compose down
Para mais informações, visite a página oficial do Docker Compose.