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:
É 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.