{"id":50680696,"url":"https://github.com/afperdomo2/databases_docker","last_synced_at":"2026-06-08T18:32:55.826Z","repository":{"id":358084905,"uuid":"1042193466","full_name":"afperdomo2/databases_docker","owner":"afperdomo2","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-15T16:08:11.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-15T18:59:28.472Z","etag":null,"topics":["docker-compose","mongodb","mysql","postgresql","redis","sqlserver-2022"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/afperdomo2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-21T16:18:01.000Z","updated_at":"2026-05-15T16:08:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/afperdomo2/databases_docker","commit_stats":null,"previous_names":["afperdomo2/databases_docker"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/afperdomo2/databases_docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afperdomo2%2Fdatabases_docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afperdomo2%2Fdatabases_docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afperdomo2%2Fdatabases_docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afperdomo2%2Fdatabases_docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/afperdomo2","download_url":"https://codeload.github.com/afperdomo2/databases_docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afperdomo2%2Fdatabases_docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34075956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","mongodb","mysql","postgresql","redis","sqlserver-2022"],"created_at":"2026-06-08T18:32:53.893Z","updated_at":"2026-06-08T18:32:55.820Z","avatar_url":"https://github.com/afperdomo2.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏗️ Development Infrastructure Services\r\n\r\nEste proyecto proporciona una infraestructura completa de servicios para el desarrollo de software usando Docker Compose, incluyendo bases de datos, mensajería y herramientas de administración web.\r\n\r\n## 📋 Servicios Incluidos\r\n\r\n### Bases de Datos\r\n\r\n- **MySQL 8.0** - Puerto 3306\r\n- **MariaDB 10.11** - Puerto 3307\r\n- **PostgreSQL 15** - Puerto 5432\r\n- **SQL Server 2022 Express** - Puerto 1433\r\n- **MongoDB 7.0** - Puerto 27017\r\n- **Redis 7.2** - Puerto 6379\r\n\r\n### Mensajería\r\n\r\n- **Kafka 4.1.1** - Puertos 9092 (interno), 9093 (externo)\r\n- **NATS** - Puerto 4222\r\n\r\n### Herramientas de Administración\r\n\r\n- **pgAdmin** - Puerto 8080 (para PostgreSQL)\r\n- **Kafka UI** - Puerto 8083 (para Kafka)\r\n\r\n## 🚀 Instalación y Configuración\r\n\r\n### Prerrequisitos\r\n\r\n- Docker Desktop instalado\r\n- Docker Compose v3.8 o superior\r\n\r\n### Configuración Inicial\r\n\r\n1. **Clonar o descargar el proyecto**\r\n\r\n   ```bash\r\n   git clone \u003ctu-repositorio\u003e\r\n   cd databases\r\n   ```\r\n\r\n2. **Configurar variables de entorno**\r\n\r\n   ```bash\r\n   # Copiar el archivo de ejemplo\r\n   cp .env.example .env\r\n\r\n   # Editar las variables según tus necesidades\r\n   # Las contraseñas por defecto están configuradas para desarrollo\r\n   ```\r\n\r\n3. **Crear directorios para scripts de inicialización (opcional)**\r\n\r\n   ```bash\r\n   mkdir -p init-scripts/mysql\r\n   mkdir -p init-scripts/mariadb\r\n   mkdir -p init-scripts/postgres\r\n   mkdir -p init-scripts/sqlserver\r\n   mkdir -p init-scripts/mongodb\r\n   ```\r\n\r\n## 🏃‍♂️ Ejecución\r\n\r\n### Iniciar todos los servicios\r\n\r\n```bash\r\ndocker-compose up -d\r\n```\r\n\r\n### Iniciar servicios específicos\r\n\r\n```bash\r\n# Solo PostgreSQL y pgAdmin\r\ndocker-compose up -d postgres pgadmin\r\n\r\n# Solo MySQL\r\ndocker-compose up -d mysql\r\n\r\n# Solo MongoDB\r\ndocker-compose up -d mongodb\r\n\r\n# Solo Kafka y Kafka UI\r\ndocker-compose up -d kafka-dev kafka-ui-dev\r\n\r\n# Solo NATS\r\ndocker-compose up -d nats-dev\r\n```\r\n\r\n### Verificar el estado\r\n\r\n```bash\r\ndocker-compose ps\r\n```\r\n\r\n### Ver logs\r\n\r\n```bash\r\n# Logs de todos los servicios\r\ndocker-compose logs -f\r\n\r\n# Logs de un servicio específico\r\ndocker-compose logs -f postgres\r\n```\r\n\r\n## 🔗 Conexiones\r\n\r\n### Conexiones desde aplicaciones externas\r\n\r\n**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.\r\n\r\n#### MySQL\r\n\r\n- **Host:** localhost\r\n- **Puerto:** 3306\r\n- **Usuario:** devuser (o root)\r\n- **Contraseña:** devpassword123 (o rootpassword123 para root)\r\n- **Base de datos:** (crear desde tu aplicación)\r\n\r\n#### MariaDB\r\n\r\n- **Host:** localhost\r\n- **Puerto:** 3307\r\n- **Usuario:** devuser (o root)\r\n- **Contraseña:** devpassword123 (o rootpassword123 para root)\r\n- **Base de datos:** (crear desde tu aplicación)\r\n\r\n#### PostgreSQL\r\n\r\n- **Host:** localhost\r\n- **Puerto:** 5432\r\n- **Usuario:** devuser\r\n- **Contraseña:** devpassword123\r\n- **Base de datos:** (crear desde tu aplicación)\r\n\r\n#### SQL Server\r\n\r\n- **Host:** localhost\r\n- **Puerto:** 1433\r\n- **Usuario:** sa\r\n- **Contraseña:** SqlServer123!\r\n- **Base de datos:** (crear desde tu aplicación)\r\n\r\n#### MongoDB\r\n\r\n- **Host:** localhost\r\n- **Puerto:** 27017\r\n- **Usuario:** root\r\n- **Contraseña:** mongopassword123\r\n- **Connection String:** `mongodb://root:mongopassword123@localhost:27017/`\r\n- **Base de datos:** (crear desde tu aplicación)\r\n\r\n#### Redis\r\n\r\n- **Host:** localhost\r\n- **Puerto:** 6379\r\n- **Contraseña:** redispassword123\r\n\r\n#### Kafka\r\n\r\n- **Host:** localhost\r\n- **Puerto externo:** 9093\r\n- **Puerto interno:** 9092 (para contenedores)\r\n- **Bootstrap Servers:** localhost:9093\r\n\r\n#### NATS\r\n\r\n- **Host:** localhost\r\n- **Puerto:** 4222\r\n- **Token:** dev_token_123\r\n\r\n### Herramientas de Administración Web\r\n\r\n#### pgAdmin (PostgreSQL)\r\n\r\n- **URL:** \u003chttp://localhost:8080\u003e\r\n- **Email:** \u003cadmin@example.com\u003e\r\n- **Contraseña:** pgadminpassword123\r\n\r\n#### Kafka UI (Kafka)\r\n\r\n- **URL:** \u003chttp://localhost:8083\u003e\r\n- **Cluster Name:** local\r\n\r\n## 📁 Persistencia de Datos\r\n\r\nTodos los datos se almacenan en volúmenes Docker nombrados:\r\n\r\n- `mysql_data` - Datos de MySQL\r\n- `mariadb_data` - Datos de MariaDB\r\n- `postgres_data` - Datos de PostgreSQL\r\n- `sqlserver_data` - Datos de SQL Server\r\n- `mongodb_data` - Datos de MongoDB\r\n- `redis_data` - Datos de Redis\r\n- `pgadmin_data` - Configuración de pgAdmin\r\n\r\n## 🔩 Configuración para Aplicaciones\r\n\r\n### Spring Boot (application.yml)\r\n\r\n```yaml\r\n# MySQL\r\nspring:\r\n  datasource:\r\n    url: jdbc:mysql://localhost:3306/tu_database_name\r\n    username: devuser  # o root\r\n    password: devpassword123  # o rootpassword123\r\n    driver-class-name: com.mysql.cj.jdbc.Driver\r\n  jpa:\r\n    hibernate:\r\n      ddl-auto: create-drop  # o update, validate, etc.\r\n\r\n# PostgreSQL\r\nspring:\r\n  datasource:\r\n    url: jdbc:postgresql://localhost:5432/tu_database_name\r\n    username: devuser\r\n    password: devpassword123\r\n    driver-class-name: org.postgresql.Driver\r\n```\r\n\r\n### NestJS (TypeORM)\r\n\r\n```typescript\r\n// MySQL\r\nTypeOrmModule.forRoot({\r\n  type: 'mysql',\r\n  host: 'localhost',\r\n  port: 3306,\r\n  username: 'devuser',  // o 'root'\r\n  password: 'devpassword123',  // o 'rootpassword123'\r\n  database: 'tu_database_name',\r\n  entities: [__dirname + '/**/*.entity{.ts,.js}'],\r\n  synchronize: true, // solo en desarrollo\r\n})\r\n\r\n// PostgreSQL\r\nTypeOrmModule.forRoot({\r\n  type: 'postgres',\r\n  host: 'localhost',\r\n  port: 5432,\r\n  username: 'devuser',\r\n  password: 'devpassword123',\r\n  database: 'tu_database_name',\r\n  entities: [__dirname + '/**/*.entity{.ts,.js}'],\r\n  synchronize: true, // solo en desarrollo\r\n})\r\n```\r\n\r\n### Variables de Entorno Recomendadas\r\n\r\n```env\r\n# Para tus aplicaciones\r\nDB_HOST=localhost\r\nDB_PORT=5432\r\nDB_USERNAME=devuser\r\nDB_PASSWORD=devpassword123\r\nDB_NAME=mi_aplicacion\r\n\r\n# MongoDB\r\nMONGO_URI=mongodb://root:mongopassword123@localhost:27017/mi_aplicacion\r\n\r\n# Redis\r\nREDIS_HOST=localhost\r\nREDIS_PORT=6379\r\nREDIS_PASSWORD=redispassword123\r\n\r\n# Kafka\r\nKAFKA_BOOTSTRAP_SERVERS=localhost:9093\r\nKAFKA_EXTERNAL_PORT=9093\r\n\r\n# NATS\r\nNATS_HOST=localhost\r\nNATS_PORT=4222\r\nNATS_TOKEN=dev_token_123\r\n```\r\n\r\n## 🔨 Comandos Útiles\r\n\r\n### Detener servicios\r\n\r\n```bash\r\ndocker-compose down\r\n```\r\n\r\n### Detener y eliminar volúmenes (⚠️ elimina todos los datos)\r\n\r\n```bash\r\ndocker-compose down -v\r\n```\r\n\r\n### Reconstruir contenedores\r\n\r\n```bash\r\ndocker-compose up -d --build\r\n```\r\n\r\n### Acceder a un contenedor\r\n\r\n```bash\r\n# Ejemplo: acceder a PostgreSQL\r\ndocker-compose exec postgres psql -U testuser -d testdb\r\n\r\n# Ejemplo: acceder a MySQL\r\ndocker-compose exec mysql mysql -u testuser -p testdb\r\n\r\n# Ejemplo: acceder a MongoDB\r\ndocker-compose exec mongodb mongosh -u root -p\r\n```\r\n\r\n## 🔧 Personalización\r\n\r\n### Cambiar puertos\r\n\r\nTodos los puertos son configurables a través de variables de entorno para evitar conflictos con servicios existentes:\r\n\r\n```env\r\n# Bases de datos\r\nMYSQL_PORT=3306\r\nMARIADB_PORT=3307\r\nPOSTGRES_PORT=5432\r\nSQLSERVER_PORT=1433\r\nMONGO_PORT=27017\r\nREDIS_PORT=6379\r\n\r\n# Herramientas web\r\nPGADMIN_PORT=8080\r\nKAFKA_UI_PORT=8083\r\nKAFKA_EXTERNAL_PORT=9093\r\nNATS_PORT=4222\r\n```\r\n\r\nSi tienes conflictos de puertos, simplemente cambia los valores en tu archivo `.env`. Por ejemplo:\r\n\r\n```env\r\n# Evitar conflictos con servicios locales\r\nMYSQL_PORT=3326\r\nPOSTGRES_PORT=5442\r\nPGADMIN_PORT=8090\r\nKAFKA_UI_PORT=8093\r\nKAFKA_EXTERNAL_PORT=9094\r\nNATS_PORT=4223\r\n```\r\n\r\n### Cambiar contraseñas\r\n\r\nModifica las variables de contraseña en `.env` antes del primer inicio.\r\n\r\n### Agregar más bases de datos\r\n\r\nPuedes agregar más servicios al `docker-compose.yaml` siguiendo el mismo patrón.\r\n\r\n## ⚠️ Consideraciones de Seguridad\r\n\r\n- Las contraseñas por defecto son para desarrollo únicamente\r\n- Cambia todas las contraseñas antes de usar en producción\r\n- Considera usar Docker Secrets para entornos productivos\r\n- Restringe el acceso a los puertos según sea necesario\r\n\r\n## 🐛 Troubleshooting\r\n\r\n### Error de puerto en uso\r\n\r\n```bash\r\n# Verificar qué proceso está usando el puerto\r\nnetstat -tulpn | grep :5432\r\n\r\n# Cambiar el puerto en .env o detener el servicio conflictivo\r\n```\r\n\r\n### Error de memoria en SQL Server\r\n\r\nSQL Server requiere al menos 2GB de RAM asignados a Docker Desktop.\r\n\r\n### Problemas de conexión\r\n\r\nVerifica que los contenedores estén ejecutándose:\r\n\r\n```bash\r\ndocker-compose ps\r\ndocker-compose logs [nombre-servicio]\r\n```\r\n\r\n## 📝 Licencia\r\n\r\nEste proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafperdomo2%2Fdatabases_docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fafperdomo2%2Fdatabases_docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafperdomo2%2Fdatabases_docker/lists"}