🇧🇷 PT
Post

Docker Utils - Essential Development Tools

Introduction to Docker Utils

I just launched my newest project: Docker Utils - a collection of useful services for development with Docker Compose. This project was born from the need to have a consistent and easy-to-configure development environment.

Why this project?

As developers, we constantly need various services for our projects: databases, caches, message queues, email tools, and more. Instead of installing each service individually on our machine or creating multiple Docker Compose files for each project, Docker Utils provides a centralized, ready-to-use collection of development services.

Problems it solves

  • Quick Setup: Start any service with a single command
  • 🧹 Clean Environment: No need to install services directly on your machine
  • 🔄 Consistent Configuration: Same setup across different projects and team members
  • 💾 Data Persistence: Your data is preserved between restarts
  • 🌐 Multiple Projects: One setup serves multiple development projects
  • 🛠 Complete Toolset: Includes web interfaces for easy management

Available Services

Databases

  • PostgreSQL 17 - Port: 5432
  • MySQL 8 - Port: 3306
  • MongoDB 7 - Port: 27017
  • Redis 7 - Port: 6379
  • SQL Server 2022 - Port: 1433
  • ElasticSearch 8.11 - Port: 9200

Email Tools

  • MailCatcher - SMTP: 1025, Web: 1080

Queues and Messaging

  • RabbitMQ - Port: 5672, Management: 15672

Storage

  • MinIO (S3 Compatible) - API: 9000, Console: 9001

Emulators

  • LocalStack (AWS Services) - Port: 4566

Web Interfaces

  • Adminer - Port: 8080 (MySQL, PostgreSQL, SQL Server)
  • RedisInsight - Port: 8001 (Redis)
  • Mongo Express - Port: 8081 (MongoDB)
  • Kibana - Port: 5601 (ElasticSearch)

How to Use

1. Clone the project

1
2
git clone https://github.com/rickmax/docker-utils.git
cd docker-utils

2. Configure the environment

1
cp .env.example .env

3. Start the services

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Start all services
docker-compose up -d

# Start only specific services
docker-compose up -d postgres redis

# View logs
docker-compose logs -f [service-name]

# Stop all services
docker-compose down

# Remove volumes (clean data)
docker-compose down -v

Usage Examples

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Databases
docker-compose up -d postgres          # PostgreSQL
docker-compose up -d mysql             # MySQL
docker-compose up -d mongodb           # MongoDB
docker-compose up -d redis             # Redis
docker-compose up -d sqlserver         # SQL Server
docker-compose up -d elasticsearch     # ElasticSearch

# Tools and interfaces
docker-compose up -d adminer           # Web interface for databases
docker-compose up -d redis-insight     # Redis interface
docker-compose up -d mongo-express     # MongoDB interface
docker-compose up -d kibana            # ElasticSearch interface
docker-compose up -d mailcatcher       # Email catcher

# Messaging and storage
docker-compose up -d rabbitmq          # RabbitMQ
docker-compose up -d minio             # MinIO (S3)
docker-compose up -d localstack        # AWS emulator

# Useful combinations
docker-compose up -d postgres redis                    # Main databases
docker-compose up -d postgres adminer                  # PostgreSQL + interface
docker-compose up -d mongodb mongo-express             # MongoDB + interface
docker-compose up -d elasticsearch kibana              # ElasticSearch + Kibana
docker-compose up -d rabbitmq mailcatcher              # Messaging + email

Connections

PostgreSQL

  • Host: localhost
  • Port: 5432
  • User: postgres
  • Password: postgres
  • Database: postgres

MySQL

  • Host: localhost
  • Port: 3306
  • Root user: root / root
  • Regular user: mysql / mysql
  • Database: mysql

MongoDB

  • Host: localhost
  • Port: 27017
  • User: root
  • Password: mongodb
  • Database: mongodb

Redis

  • Host: localhost
  • Port: 6379
  • No authentication by default

SQL Server

  • Host: localhost
  • Port: 1433
  • User: sa
  • Password: SqlServer@2024

RabbitMQ

  • Host: localhost
  • Port: 5672
  • Management: http://localhost:15672
  • User: rabbitmq
  • Password: rabbitmq

MailCatcher

  • SMTP: localhost:1025
  • Web Interface: http://localhost:1080

MinIO

  • API: http://localhost:9000
  • Console: http://localhost:9001
  • Access Key: minioadmin
  • Secret Key: minioadmin

LocalStack

  • Endpoint: http://localhost:4566
  • Services: S3, DynamoDB, SQS, SNS, Lambda

Web Interfaces

  • Adminer: http://localhost:8080
  • RedisInsight: http://localhost:8001
  • Mongo Express: http://localhost:8081 (admin/admin)
  • Kibana: http://localhost:5601
  • RabbitMQ Management: http://localhost:15672
  • MinIO Console: http://localhost:9001
  • MailCatcher: http://localhost:1080

Usage in Projects

To use in your projects, you can:

1. External Reference

Point your applications to localhost on the corresponding ports

2. Docker Network

Connect your project to the docker-utils-network:

1
2
3
4
5
# In your project's docker-compose.yml
networks:
  default:
    external:
      name: docker-utils_docker-utils-network

3. Extend

Use this compose as a base:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Your project's docker-compose.yml
version: '3.8'

services:
  app:
    build: .
    networks:
      - docker-utils_docker-utils-network
    external_links:
      - docker-utils-postgres:postgres
      - docker-utils-redis:redis

networks:
  docker-utils_docker-utils-network:
    external: true

Tips

  • Use environment variables to avoid exposing passwords in production
  • Each service has health checks configured
  • Data is persisted in named volumes
  • To reset a database, remove the volume: docker-compose down -v
  • Check logs if any service fails to start: docker-compose logs [service]

Requirements

  • Docker 20.10+
  • Docker Compose 2.0+
  • Minimum 4GB RAM available (for all services)
  • Disk space for volumes

Compatibility

This project is cross-platform and works on:

  • Windows (Docker Desktop)
  • macOS (Docker Desktop)
  • Linux (Docker Engine/Docker Desktop)

All Docker images used are official and support multiple architectures (x86_64, ARM64).

Conclusion

Docker Utils is perfect for:

  • Rapid Prototyping: Test ideas quickly without complex setup
  • Learning: Experiment with different technologies safely
  • Team Development: Ensure everyone uses the same service versions
  • Microservices: All the infrastructure you need in one place
  • Integration Testing: Test against real services, not mocks

This project was born from the need to have a consistent and easy-to-configure development environment. I hope it’s useful for other developers who face the same challenges I faced.

Check out the project on GitHub: https://github.com/rickmax/docker-utils

This post is licensed under CC BY 4.0 by the author.