Este proyecto proporciona un # Solo MongoDB docker-compose up -d mongodbtorno completo de bases de datos usando Docker Compose, incluyendo MySQL, MariaDB, PostgreSQL, SQL Server, MongoDB y Redis, junto con herramientas de administración web.
- MySQL 8.0 - Puerto 3306
- MariaDB 10.11 - Puerto 3307
- PostgreSQL 15 - Puerto 5432
- SQL Server 2022 Express - Puerto 1433
- MongoDB 7.0 - Puerto 27017
- Redis 7.2 - Puerto 6379
- pgAdmin - Puerto 8080 (para PostgreSQL)
- Docker Desktop instalado
- Docker Compose v3.8 o superior
-
Clonar o descargar el proyecto
git clone <tu-repositorio> cd databases
-
Configurar variables de entorno
# Copiar el archivo de ejemplo cp .env.example .env # Editar las variables según tus necesidades # Las contraseñas por defecto están configuradas para desarrollo
-
Crear directorios para scripts de inicialización (opcional)
mkdir -p init-scripts/mysql mkdir -p init-scripts/mariadb mkdir -p init-scripts/postgres mkdir -p init-scripts/sqlserver mkdir -p init-scripts/mongodb
docker-compose up -d
# Solo PostgreSQL y pgAdmin docker-compose up -d postgres pgadmin # Solo MySQL docker-compose up -d mysql # Solo MongoDB docker-compose up -d mongodb
docker-compose ps
# Logs de todos los servicios docker-compose logs -f # Logs de un servicio específico docker-compose logs -f postgres
Importante: Las bases de datos se inician vacías (sin tablas predefinidas). Las aplicaciones (Spring Boot, NestJS, etc.) deben crear sus propias bases de datos, tablas y esquemas según sus necesidades usando los usuarios configurados.
- Host: localhost
- Puerto: 3306
- Usuario: devuser (o root)
- Contraseña: devpassword123 (o rootpassword123 para root)
- Base de datos: (crear desde tu aplicación)
- Host: localhost
- Puerto: 3307
- Usuario: devuser (o root)
- Contraseña: devpassword123 (o rootpassword123 para root)
- Base de datos: (crear desde tu aplicación)
- Host: localhost
- Puerto: 5432
- Usuario: devuser
- Contraseña: devpassword123
- Base de datos: (crear desde tu aplicación)
- Host: localhost
- Puerto: 1433
- Usuario: sa
- Contraseña: SqlServer123!
- Base de datos: (crear desde tu aplicación)
- Host: localhost
- Puerto: 27017
- Usuario: root
- Contraseña: mongopassword123
- Connection String:
mongodb://root:mongopassword123@localhost:27017/
- Base de datos: (crear desde tu aplicación)
- Host: localhost
- Puerto: 6379
- Contraseña: redispassword123
- URL: http://localhost:8080
- Email: admin@example.com
- Contraseña: pgadminpassword123
Todos los datos se almacenan en volúmenes Docker nombrados:
mysql_data
- Datos de MySQLmariadb_data
- Datos de MariaDBpostgres_data
- Datos de PostgreSQLsqlserver_data
- Datos de SQL Servermongodb_data
- Datos de MongoDBredis_data
- Datos de Redispgadmin_data
- Configuración de pgAdmin
# MySQL spring: datasource: url: jdbc:mysql://localhost:3306/tu_database_name username: devuser # o root password: devpassword123 # o rootpassword123 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: create-drop # o update, validate, etc. # PostgreSQL spring: datasource: url: jdbc:postgresql://localhost:5432/tu_database_name username: devuser password: devpassword123 driver-class-name: org.postgresql.Driver
// MySQL TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'devuser', // o 'root' password: 'devpassword123', // o 'rootpassword123' database: 'tu_database_name', entities: [__dirname + '/**/*.entity{.ts,.js}'], synchronize: true, // solo en desarrollo }) // PostgreSQL TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'devuser', password: 'devpassword123', database: 'tu_database_name', entities: [__dirname + '/**/*.entity{.ts,.js}'], synchronize: true, // solo en desarrollo })
# Para tus aplicaciones DB_HOST=localhost DB_PORT=5432 DB_USERNAME=devuser DB_PASSWORD=devpassword123 DB_NAME=mi_aplicacion # MongoDB MONGO_URI=mongodb://root:mongopassword123@localhost:27017/mi_aplicacion # Redis REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=redispassword123
docker-compose down
docker-compose down -v
docker-compose up -d --build
# Ejemplo: acceder a PostgreSQL docker-compose exec postgres psql -U testuser -d testdb # Ejemplo: acceder a MySQL docker-compose exec mysql mysql -u testuser -p testdb # Ejemplo: acceder a MongoDB docker-compose exec mongodb mongosh -u root -p
Todos los puertos son configurables a través de variables de entorno para evitar conflictos con servicios existentes:
# Bases de datos MYSQL_PORT=3306 MARIADB_PORT=3307 POSTGRES_PORT=5432 SQLSERVER_PORT=1433 MONGO_PORT=27017 REDIS_PORT=6379 # Herramientas web PGADMIN_PORT=8080
Si tienes conflictos de puertos, simplemente cambia los valores en tu archivo .env
. Por ejemplo:
# Evitar conflictos con servicios locales MYSQL_PORT=3326 POSTGRES_PORT=5442 PGADMIN_PORT=8090
Modifica las variables de contraseña en .env
antes del primer inicio.
Puedes agregar más servicios al docker-compose.yaml
siguiendo el mismo patrón.
- Las contraseñas por defecto son para desarrollo únicamente
- Cambia todas las contraseñas antes de usar en producción
- Considera usar Docker Secrets para entornos productivos
- Restringe el acceso a los puertos según sea necesario
# Verificar qué proceso está usando el puerto netstat -tulpn | grep :5432 # Cambiar el puerto en .env o detener el servicio conflictivo
SQL Server requiere al menos 2GB de RAM asignados a Docker Desktop.
Verifica que los contenedores estén ejecutándose:
docker-compose ps docker-compose logs [nombre-servicio]
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.