Instalando o Docker Compose no Ubuntu
Objetivo do post:
- Fazer breve descrição do que é e para que serve o Docker Compose
- Apresentar um modo simples de instalá-lo no Ubuntu
O que é Docker Compose, e por que utilizá-lo?
Você sempre deve fazer essas duas perguntas sobre uma determinada tecnologia que você deseja estudar. Primeiro você precisa entender o que ela é, e depois por quais motivos ela pode ser interessante para o seu dia-a-dia.
No caso do Docker Compose, temos a seguinte definição da Docker, criadora dele:
Compose is a tool for defining and running multi-container Docker applications.
Ou seja no nosso bom e velho português, é uma ferramenta que permite a definição de aplicações que utilizem múltiplos containers Docker. Num exemplo bem trivial e típico, vamos imaginar uma aplicação web que necessite de um servidor de aplicação, como o Tomcat por exemplo, e uma base de dados, servida por um sistema gerenciador de banco de dados (SGBD) como o Postgres.
Nesse exemplo, a aplicação web acessa e grava dados em uma base de dados, ou seja, o servidor de aplicações e o SGBD precisam estar "conectados". Essa situação mostra que teremos no mínimo dois containers para que a aplicação possa funcionar: o servidor de aplicações e o SGBD.
Poderíamos iniciar o container do SGBD com o comando docker run
(https://docs.docker.com/engine/reference/run/) e
posteriormente o container do servidor de aplicação na mesma rede do container do SGBD
(https://docs.docker.com/engine/reference/run/#network-settings).
No entanto, observe que além de serem passos manuais, ainda tem que seguir uma determinada sequencia. No caso de apenas dois containers ainda é razoável, mas e se houvesse mais containers?
Evite sempre que possível passos manuais para não ter problemas!
Sendo assim, podemos utilizar o Docker Compose para automatizar esse processo, definindo as imagens de nossos containers, as redes das quais eles fazem parte, as portas que serão expostas, e muito mais.
Outra vantagem de utilizar o Docker Compose, é que ele é definido usando um arquivo YAML, que é bem semântico e intuitivo. Esse arquivo por padrão deve ter o nome docker-compose.yml (mas pode ser arbitrariamente definido por meio de parâmetros). Nesse exemplo que estamos analisando, olha que simples ficaria o Docker Compose:
version: "3.5"
services:
db: # Serviço do banco de dados Postgres
image: postgres:12.2-alpine
environment:
- POSTGRES_USER=usuario_banco
- POSTGRES_PASSWORD=senha_usuario
- POSTGRES_DB=nome_banco
tomcat: # Serviço do Tomcat
image: tomcat:10.0.0
ports:
- "80:8080"
volumes:
- ./aplicacao.war:/usr/lib/tomcat/webapps/aplicacao.war # Mapeamento da sua aplicação para o container
Nele definimos dois serviços, db
e tomcat
, respectivamente usando as imagens postgres:12.2-alpine
e
tomcat:10.0.0
. Além disso:
- Definimos variáveis de ambiente para configurar o usuário, senha e banco do Postgres
- Mapeamos o arquivo
aplicacao.war
do nosso computador para o diretóriowebapps
do Tomcat, para que ele possa servir nossa aplicação. - Expomos a porta
8080
do container na porta80
do nosso computador.
Para subir os containers, basta executar:
docker-compose up -d
E para finalizá-los:
docker-compose down
Observe que esse arquivo pode ser armazenado em um repositório de código fonte, como git e disponibilizado para mais pessoas. Desse modo, fica fácil distribuir sua aplicação, inclusive em plataformas diferentes, como Linux e Windows.
Enfim, só vantagem. Mais detalhes sobre a utilização do Docker Compose no post Como utilizar o Flyway? e na documentação do Docker Compose.
Como instalar o Docker Compose no Ubuntu?
Super tranquilo instalar o Docker Compose no Ubuntu. São apenas 2 comandos:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
você precisa ter o curl instalado.
Uma vez instalado, você pode verificar a versão:
docker-compose version
Espero que tenha sido útil esse post! Deixe suas críticas, dúvidas, comentários, ou sugestões de novos tópicos! Se gostou, peço que compartilhe nas suas redes sociais para que mais pessoas possam conhecer essa excelente ferramenta!