Docker

Dicas de Imagens Úteis de Container Docker

Esta página contém comandos prontos para subir rapidamente serviços comuns em desenvolvimento. Todos os exemplos incluem a versão docker run e docker-compose.

Atenção: Os exemplos abaixo são configurados para desenvolvimento local. Não use senhas vazias ou fracas em produção!

Flags Comuns Explicadas

FlagDescrição
-dRoda em background (detached mode)
--restart unless-stoppedReinicia automaticamente, exceto se parado manualmente
-p host:containerMapeia porta do host para o container
-v nome:/pathCria volume para persistir dados
-e VAR=valorDefine variável de ambiente
--nameNome do container para fácil identificação

Bancos de Dados

PostgreSQL

Banco de dados relacional robusto, muito usado em aplicações web modernas.

docker run -d \
  --name postgres \
  --restart unless-stopped \
  -e POSTGRES_USER=root \
  -e POSTGRES_PASSWORD=root \
  -e POSTGRES_DB=app \
  -v postgres_data:/var/lib/postgresql/data \
  -p 5432:5432 \
  postgres:16-alpine

Conectar via CLI:

docker exec -it postgres psql -U root -d app

MySQL / MariaDB

Banco de dados relacional popular, especialmente em aplicações PHP/Laravel.

docker run -d \
  --name mysql8 \
  --restart unless-stopped \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=app \
  -v mysql8_data:/var/lib/mysql \
  -p 3306:3306 \
  mysql:8

Conectar via CLI:

docker exec -it mysql8 mysql -uroot -proot

MongoDB

Banco de dados NoSQL orientado a documentos, ideal para dados flexíveis e escalabilidade horizontal.

docker run -d \
  --name mongodb \
  --restart unless-stopped \
  -e MONGO_INITDB_ROOT_USERNAME=root \
  -e MONGO_INITDB_ROOT_PASSWORD=root \
  -v mongodb_data:/data/db \
  -p 27017:27017 \
  mongo:7

Conectar via CLI:

docker exec -it mongodb mongosh -u root -p root

Cache e Busca

Redis

Banco de dados em memória para cache, sessões, filas e pub/sub. Extremamente rápido.

docker run -d \
  --name redis \
  --restart unless-stopped \
  -v redis_data:/data \
  -p 6379:6379 \
  redis:7-alpine redis-server --appendonly yes

Conectar via CLI:

docker exec -it redis redis-cli

Comandos úteis:

# Listar todas as chaves
KEYS *
 
# Ver valor de uma chave
GET minha_chave
 
# Limpar todo o cache
FLUSHALL

Elasticsearch

Motor de busca e análise distribuído. Ideal para busca full-text, logs e analytics.

docker run -d \
  --name elasticsearch \
  --restart unless-stopped \
  -e discovery.type=single-node \
  -e xpack.security.enabled=false \
  -e "ES_JAVA_OPTS=-Xms1G -Xmx1G" \
  -v elasticsearch_data:/usr/share/elasticsearch/data \
  -p 9200:9200 \
  -p 9300:9300 \
  elasticsearch:8.11.0

Testar conexão:

curl http://localhost:9200

Mensageria

RabbitMQ

Message broker robusto para comunicação assíncrona entre serviços.

docker run -d \
  --name rabbitmq \
  --restart unless-stopped \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=admin \
  -v rabbitmq_data:/var/lib/rabbitmq \
  -p 5672:5672 \
  -p 15672:15672 \
  rabbitmq:3-management-alpine

Acessar interface web: http://localhost:15672 (admin/admin)


Storage

MinIO

Storage compatível com API S3 da AWS. Perfeito para desenvolvimento local com uploads.

docker run -d \
  --name minio \
  --restart unless-stopped \
  -e MINIO_ROOT_USER=minioadmin \
  -e MINIO_ROOT_PASSWORD=minioadmin \
  -v minio_data:/data \
  -p 9000:9000 \
  -p 9001:9001 \
  minio/minio server /data --console-address ":9001"

Acessar console: http://localhost:9001 (minioadmin/minioadmin)


Email (Desenvolvimento)

Mailhog

Captura todos os emails enviados pela aplicação. Ideal para testar envio de emails sem spam real.

docker run -d \
  --name mailhog \
  --restart unless-stopped \
  -p 1025:1025 \
  -p 8025:8025 \
  mailhog/mailhog

Configuração SMTP:

  • Host: localhost
  • Porta: 1025
  • Sem autenticação

Acessar interface: http://localhost:8025


Ferramentas de Administração

Adminer

Interface web leve para gerenciar bancos de dados (MySQL, PostgreSQL, SQLite, etc.).

docker run -d \
  --name adminer \
  --restart unless-stopped \
  -p 8080:8080 \
  adminer

Acessar: http://localhost:8080


phpMyAdmin

Interface web para MySQL/MariaDB.

docker run -d \
  --name phpmyadmin \
  --restart unless-stopped \
  -e PMA_ARBITRARY=1 \
  -p 8081:80 \
  phpmyadmin

Acessar: http://localhost:8081


Utilitários

SSH Server

Servidor SSH para testes de conexão remota e túneis.

Altere USER_NAME e USER_PASSWORD antes de usar!

docker run -d \
  --name openssh-server \
  --restart unless-stopped \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=America/Sao_Paulo \
  -e PASSWORD_ACCESS=true \
  -e USER_PASSWORD=sua_senha_segura \
  -e USER_NAME=seu_usuario \
  -v ssh_config:/config \
  -p 2222:2222 \
  lscr.io/linuxserver/openssh-server

Conectar:

ssh seu_usuario@localhost -p 2222

Dicas Gerais

Parar todos os containers

docker stop $(docker ps -q)

Remover containers parados

docker container prune

Ver logs de um container

docker logs -f nome_container

Entrar em um container

docker exec -it nome_container sh
# ou com bash (se disponível)
docker exec -it nome_container bash