DevSecOpsARTIGO

Conhecendo a ferramenta Docker Compose – Parte 02

Hoje veremos um pouco mais sobre o Docker Compose, uma ferramenta que vai agilizar no deploy de seu ambiente, utilizando uma forma simples, clara e padronizada.

Oi, pessoal!

Seguindo nossa série de artigos sobre as ferramentas do ecossistema DockerDocker46 conteúdosE o Docker Swarm? Contextos e motivadores diáriosDevSecOps · ago 2024Automatizando o ambiente de desenvolvimento e testes com DockerDevSecOps · mai 2019MySQL + Adminer + Docker Compose: montando rapidamente um ambiente para usoData · abr 2019Ver tudo em DevSecOps , hoje veremos um pouco mais sobre o Docker Compose, uma ferramenta que vai agilizar no deploy de seu ambiente, utilizando uma forma simples, clara e padronizada.

O Docker Compose é uma ferramenta para a criação e execução de múltiplos containers de aplicação. Com o Compose, você usar um arquivo do tipo yaml para definir como será o ambiente de sua aplicação e usando um único comando você criará e iniciará todos os serviços definidos.

O Compose é ótimo para desenvolvimento, testes e homologação, bem como para melhorar seu fluxo de integração continua. Por exemplo:

Para utilizar o docker-compose você precisa ter em mente que será necessário seguir essas três etapas:

  1. Definir o ambiente necessário para sua aplicação utilizando um Dockerfile (que pode ser reproduzido em qualquer lugar que tenha Docker instalado);
  2. Definir no arquivo .yml quais serviços são essenciais para sua aplicação e a relação entre elas;
  3. Executar o comando docker-compose up para que seu ambiente seja criado e configurado.

Fácil, certo?! Vamos praticar?

Instalação

Bem simples, basta executar o seguinte comando (caso Linux). Se você estiver utilizando em Windows via Docker ToolBox, você já terá disponível o docker-compose. Vamos lá:

curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m`
\ > /usr/local/bin/docker-compose

Depois:

chmod +x /usr/local/bin/docker-compose

Compose eu escolho você

Vamos testar com um WordPress. É fácil:

  • Criar um diretório de trabalho (mkdir /my-app);
  • Faça download do WordPress: cd /my-app; curl https://wordpress.org/latest.tar.gz | tar -xvzf –
  • Criar um arquivo Dockerfile com o seguinte código:
FROM orchardup/php5
ADD . /app
  • Criar um arquivo my-app.yml com o código:
web:
  build: .
  command: php -S 0.0.0.0:8000 -t /my-app
  ports:
    - "80:8000"
  links:
    - db
  volumes:
    - .:/my-app
db:
  image: orchardup/mysql
  environment:
    MYSQL_DATABASE: wordpress

Certifique-se de que seu wp-config esteja parecido com este:

<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', "db:3306");
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

$table_prefix  = 'wp_';
define('WPLANG', '');
define('WP_DEBUG', false);

if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

require_once(ABSPATH . 'wp-settings.php');
  • O que falta? docker-compose up no diretório onde você criou o Dockerfile e o  my-app.yml.

Agora é só acessar: http://ipdamaquina e prosseguir com a instalação do Woprdress normalmente. O que o Compose fez então? No passo 3, nós criamos um arquivo Dockerfile contendo a descrição da imagem que queremos criar e que será utilizada como base para o nosso ambiente.

No passo 4, nós definimos qual era esse ambiente (veja que definimos one container para atender requisições web e um banco de dados). Quando executamos o docker-compose up, ele criará a imagem baseado no Dockerfile e criará os containers de serviços que definimos no my-app.yml.

O mais legal é você pode escalar seu ambiente, ter mais containers web. Para isso, docker-compose scale web=5 e o Compose criará e iniciará cinco containers do serviço web que definimos no my-app.yml.

Alguns dados importantes sobre o Docker Compose:

  1. O Compose preserva todos os volumes atribuídos aos seus serviços, por exemplo, quando você executa o docker-compose up, se você já tiver algum outro container utilizando o volume informado, o Compose copiará o volume do container antigo para o novo container, sem perder nenhuma informação.
  2. O Compose recriará apenas containers cujas configurações foras modificadas, caso contrário ele se baseará nas configurações que ele já tem armazenada em cache – isso é muito útil, principalmente, para provisionar e escalar seu ambiente de forma muito mais rápida.

Você ainda pode utilizar o Docker Compose juntamente com o Docker Machine e provisionar seu ambiente em qualquer lugar que precisar, isso é ainda mais útil para quem tem seu serviço de infraestrutura terceirizado com outros provedores (AWS, Digital Ocean, etc).

Gostou? Ótimo! Deixe seu feedback para que possamos melhorar cada vez mais.

Entusiasta Open Source, trabalha atualmente como Container Specialist na Umbler, seu principal foco é ir atrás de ideias novas e torná-las realidade por meio de soluções simples e eficientes.​ É autor também no site Mundo Docker (www.mundodocker.com.br)

Ver perfil