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:

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.