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"

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"

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

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!!!