Docker - Algumas coisas que podem ser feitas além do "Hello world"

Oi pessoal!:) Quero começar este post agradecendo mais uma vez por estarem prestigiando o conteúdo do blog. Esta é uma pequena iniciativa para disseminar conhecimento, trocar experiências e também aprender com vocês, então vamos seguir!

A ideia deste post é falar um pouco mais de Docker e algumas coisas que podem ser feitas além do "hello world".
Quando comecei a usar Docker apenas tinha em mente ter uma aplicação rodando em background e pronto, tela preta e um serviço rodando (postgres, wildfly e outros). Descobrir que Docker vai além disso é muito interessante e instigante, dá para fazer muitas coisas bem legais.
Esses dias queria fazer uma api em php utilizando o Slim Framework, porém tinha que instalar todo o ambiente na minha máquina para desenvolvê-la. Será que isso vale a pena, quando somente pretende-se "brincar" com um framework? Bom, acredito que não, então o que fiz:

web:
  image: tutum/apache-php
  hostname: web
  links:
   - mysql
  ports:
   - 80:80
  volumes:
   - .:/app

mysql:
  image: mysql
  hostname: mysql
  environment:
   - MYSQL_ROOT_PASSWORD=root 

Nessa parte é feito o link do container apache-php com o container do mysql.

links:
 - mysql

Aqui está sendo feito a parte mais importante desse docker-compose,

volumes:
 - .:/app

Esse volume basicamente serve para mapear um diretório no local onde está sendo executado o docker-compose com a pasta app do container. Ao criar um arquivo nessa pasta, será adicionado ao apache, com isso não é preciso configurar todo o ambiente do php para conseguir "brincar" com o Slim Framework, isso possibilita fazer inúmeras coisas como: compartilhar entre a máquina e o container, .jar, .war, .js, .html e etc.
Outra funcionalidade muito importante do volume é fazer backup de dados, como por exemplo: criar um volume com o banco de dados do postgres e toda vez que subir um container do postgres, apontar para o volume criado, com isso não seria perdido os dados do banco de dados, às vezes isso é bem útil, ainda mais quando utilizado docker em produção :).

Mas você deve está se perguntando: - Ainda é uma interface preta que está apenas rodando um serviço! Então vamos ver uma coisa legal :).

E se agora eu não tivesse mais interesse em instalar o Google chrome na minha máquina, então bastaria executar o seguinte comando:

docker run -it --net host --cpuset-cpus 0  -m 512mb -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -v /dev/snd:/dev/snd --privileged --name chrome jess/chrome

E com isso temos:

docker-chrome docker-chrome

É possível compartilhar placa de som, USB e etc com um container, isso possibilita fazer muitas coisas, por exemplo: não precisar instalar o ambiente do Android na máquina, para executar testes em app Android, mas isso fica para um próximo post! Até breve.

Rafael Chiavegatto

Analista de testes na FPF tech, possui mais de 7 anos de experiência em testes. Conhecimento em metodologias ágeis, automatização de testes, agile testing e da cultura DevOps.

Manaus - Amazonas