DEV Community

Cover image for Execução de múltiplos contêiners com Docker Compose
Erick Andrade
Erick Andrade

Posted on

Execução de múltiplos contêiners com Docker Compose

Qual desenvolvedor nunca teve que subir uma aplicação em uma máquina virtual e teve que instalar algum banco de dados ou algum java da vida pra executar a aplicação.
Para evitar essas dores de cabeça geralmente é utilizado o Docker para iniciar um contêiner contendo um banco de dados ou algum servidor exemplo Tomcat.
Nesse artigo irei explicar como o Docker Compose pode facilitar sua vida e inicialização vários contêiners com algumas configurações bem simples.

O que é Docker Compose

Basicamente um ferramenta para gerenciar vários conteiners Docker, informando os serviços, dependências, volumes e etc.
Nesse tutorial vamos falar do simples, se é uma ferramenta que é pra facilitar, pra que complicar?

Configurações necessárias

Para isso é necessário ter o Docker Engine instalado na sua máquina, agora copie o código abaixo em um arquivo chamado docker-compose.yaml

Nosso código:

version: '3'

services:
  web:
    image: nginx
    volumes:
      - ./templates:/etc/nginx/templates/default.conf
    ports:
      - "8080:80"
Enter fullscreen mode Exit fullscreen mode

Definimos o version que é a versão do formato do nosso código.
Definimos o services que são os conteiners que desejamos utilizar e dentro deles temos alguma configurações, como:
A imagem que está no DockerHub, volumes para persistir os dados do conteiner e ports para definir como iremos acessar aquele recurso.

Agora ao executar o comando docker compose up iremos baixar as imagens e iniciar os contêiners, agora se quisermos dar o mesmo comando e execucar em segundo plano fazemos assim docker compose up -d, para parar a execução no nosso terminal só dar um Ctrl+C ou quando executar em segundo plano docker compose stop.

Adicionando um banco de dados

Agora iremos adicionar um Postgres em nosso projeto pra isso copie o código:

version: '3'

services:
  web:
    image: nginx
    volumes:
      - ./templates:/etc/nginx/templates/default.conf
    ports:
      - "8080:80"
  db:
    image: postgres:latest
    restart: always
    environment:
      - POSTGRES_PASSWORD=123
    ports:
      - "5433:5432"

Enter fullscreen mode Exit fullscreen mode

Com isso iremos iniciar um servidor nginx e um banco de dados em somente uma configuração, sem precisar ter instalado nada em nossas máquinas, apenas com a dockerização usando o Docker.

Imagem personalizadas

Para criar um conteiner com uma imagem personalizada é muito simples basta adicionar o atributo build e pronto, pode utilizar sua imagem de um Dockerfile no Compose.

Exemplo:

services:
  app:
    build: ./
    ports:
      - "8080:8080"
    container_name: app
    depends_on:
      - db
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/database
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=123
Enter fullscreen mode Exit fullscreen mode

Aqui no caso estou criando uma imagem de um projeto Spring Boot que depende de outra imagem que se chama db para ser executada corretamente.
Isso é tudo pra esse artigo, bem simples e rápido, caso deseje se aventurar no mundo do Docker Compose ou Docker acessa a documentação:
Documentação Docker Compose

Até a próxima!!!

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay