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
| Flag | Descrição |
|---|---|
-d | Roda em background (detached mode) |
--restart unless-stopped | Reinicia automaticamente, exceto se parado manualmente |
-p host:container | Mapeia porta do host para o container |
-v nome:/path | Cria volume para persistir dados |
-e VAR=valor | Define variável de ambiente |
--name | Nome 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-alpineservices:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_DB: app
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
postgres_data: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-alpineservices:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_DB: app
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
postgres_data:Conectar via CLI:
docker exec -it postgres psql -U root -d appMySQL / 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:8docker run -d \
--name mysql57 \
--restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=app \
-v mysql57_data:/var/lib/mysql \
-p 3306:3306 \
mysql:5.7docker run -d \
--name mariadb \
--restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=app \
-v mariadb_data:/var/lib/mysql \
-p 3306:3306 \
mariadb:11docker 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:8docker run -d \
--name mysql57 \
--restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=app \
-v mysql57_data:/var/lib/mysql \
-p 3306:3306 \
mysql:5.7docker run -d \
--name mariadb \
--restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=app \
-v mariadb_data:/var/lib/mysql \
-p 3306:3306 \
mariadb:11Conectar via CLI:
docker exec -it mysql8 mysql -uroot -prootMongoDB
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:7services:
mongodb:
image: mongo:7
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root
volumes:
- mongodb_data:/data/db
ports:
- "27017:27017"
volumes:
mongodb_data: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:7services:
mongodb:
image: mongo:7
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root
volumes:
- mongodb_data:/data/db
ports:
- "27017:27017"
volumes:
mongodb_data:Conectar via CLI:
docker exec -it mongodb mongosh -u root -p rootCache 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 yesservices:
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis_data:/data
ports:
- "6379:6379"
volumes:
redis_data:docker run -d \
--name redis \
--restart unless-stopped \
-v redis_data:/data \
-p 6379:6379 \
redis:7-alpine redis-server --appendonly yesservices:
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis_data:/data
ports:
- "6379:6379"
volumes:
redis_data:Conectar via CLI:
docker exec -it redis redis-cliComandos úteis:
# Listar todas as chaves
KEYS *
# Ver valor de uma chave
GET minha_chave
# Limpar todo o cache
FLUSHALLElasticsearch
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.0docker run -d \
--name elasticsearch7 \
--restart unless-stopped \
-e discovery.type=single-node \
-e "ES_JAVA_OPTS=-Xms1G -Xmx1G" \
-v elasticsearch7_data:/usr/share/elasticsearch/data \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.17.15docker 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.0docker run -d \
--name elasticsearch7 \
--restart unless-stopped \
-e discovery.type=single-node \
-e "ES_JAVA_OPTS=-Xms1G -Xmx1G" \
-v elasticsearch7_data:/usr/share/elasticsearch/data \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.17.15Testar conexão:
curl http://localhost:9200Mensageria
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-alpineservices:
rabbitmq:
image: rabbitmq:3-management-alpine
restart: unless-stopped
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
volumes:
- rabbitmq_data:/var/lib/rabbitmq
ports:
- "5672:5672"
- "15672:15672"
volumes:
rabbitmq_data: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-alpineservices:
rabbitmq:
image: rabbitmq:3-management-alpine
restart: unless-stopped
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
volumes:
- rabbitmq_data:/var/lib/rabbitmq
ports:
- "5672:5672"
- "15672:15672"
volumes:
rabbitmq_data: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"services:
minio:
image: minio/minio
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- minio_data:/data
ports:
- "9000:9000"
- "9001:9001"
volumes:
minio_data: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"services:
minio:
image: minio/minio
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- minio_data:/data
ports:
- "9000:9000"
- "9001:9001"
volumes:
minio_data: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/mailhogservices:
mailhog:
image: mailhog/mailhog
restart: unless-stopped
ports:
- "1025:1025" # SMTP
- "8025:8025" # Web UIdocker run -d \
--name mailhog \
--restart unless-stopped \
-p 1025:1025 \
-p 8025:8025 \
mailhog/mailhogservices:
mailhog:
image: mailhog/mailhog
restart: unless-stopped
ports:
- "1025:1025" # SMTP
- "8025:8025" # Web UIConfiguraçã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 \
adminerAcessar: http://localhost:8080
phpMyAdmin
Interface web para MySQL/MariaDB.
docker run -d \
--name phpmyadmin \
--restart unless-stopped \
-e PMA_ARBITRARY=1 \
-p 8081:80 \
phpmyadminAcessar: 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-serverConectar:
ssh seu_usuario@localhost -p 2222Dicas Gerais
Parar todos os containers
docker stop $(docker ps -q)Remover containers parados
docker container pruneVer logs de um container
docker logs -f nome_containerEntrar em um container
docker exec -it nome_container sh
# ou com bash (se disponível)
docker exec -it nome_container bash