Este repositório contém a infraestrutura como código (IaC) para um serviço de armazenamento de objetos local, S3-compatível, utilizando MinIO, com um proxy reverso dinâmico Traefik para gerenciamento de rotas e acesso via domínios locais.
- Armazenamento S3-Compatível: Serviço de armazenamento de objetos robusto com MinIO.
- Proxy Reverso Dinâmico: Uso do Traefik para descoberta automática de serviços e roteamento baseado em nomes de domínio.
- Domínios Locais: Acesso aos serviços através de URLs amigáveis como
http://console.minio.local. - Infraestrutura como Código: Todo o stack é definido de forma declarativa usando
docker-compose. - Pronto para Produção: Utiliza melhores práticas como versionamento de imagens,
healthcheckse configuração via variáveis de ambiente.
Siga os passos abaixo para iniciar o stack de armazenamento localmente.
- Docker instalado e rodando.
- Docker Compose instalado.
git clone https://github.com/RafaelQSantos-RQS/minio
cd miniomComo este stack foi projetado para se integrar com outros, ele espera que a rede web já exista. Crie-a com o seguinte comando:
docker network create webEdite seu arquivo hosts para mapear os domínios locais para sua máquina.
- No Linux/macOS:
/etc/hosts - No Windows:
C:\Windows\System32\drivers\etc\hosts
Adicione a seguinte linha ao final do arquivo:
127.0.0.1 console.minio.local s3.minio.local
Copie o arquivo de exemplo .env.example para um novo arquivo chamado .env.
cp .env.example .envVocê pode customizar os valores no arquivo .env se desejar.
Com tudo configurado, inicie os containers em modo detached (background):
docker-compose up -d- Console do MinIO: http://console.minio.local
- Dashboard do Traefik: http://localhost:8080
As credenciais padrão para o MinIO estão definidas no seu arquivo .env.
.
├── data/ # (Criado pelo Docker) Armazena os dados do MinIO
├── docker-compose.yml # Define os serviços Traefik e MinIO
├── traefik.yml # Configuração estática do Traefik
├── .env # (Ignorado) Suas variáveis de ambiente locais
├── .env.example # Exemplo de variáveis de ambiente
└── README.md # Esta documentação