# docker-compose.overrride.yml # Docker Comose para entorno de desarrollo o development. services: nginx-proxy-manager: image: jc21/nginx-proxy-manager:latest container_name: nginx-proxy-manager restart: unless-stopped depends_on: suitecoffee-app: condition: service_healthy suitecoffee-auth: condition: service_healthy ports: - "80:80" # HTTP público - "81:81" # UI de administración NPM - "443:443" # HTTPS público volumes: - dev-npm_data:/data # config + DB (SQLite) - dev-npm_letsencrypt:/etc/letsencrypt networks: - suitecoffee-net suitecoffee-app: image: node:20-bookworm container_name: suitecoffee-app depends_on: suitecoffee-db: condition: service_healthy suitecoffee-tenants: condition: service_healthy ports: - 3000:3000 working_dir: /app user: "${UID:-1000}:${GID:-1000}" volumes: - ./services/app:/app:rw - ./node_modules:/app/node_modules env_file: - ./services/app/.env.development environment: - NODE_ENV=${NODE_ENV} command: npm run dev healthcheck: # IMPORTANTE: asegurate de tener curl instalado en la imagen de app (ver nota abajo) test: ["CMD-SHELL", "curl -fsS http://localhost:${APP_DOCKER_PORT}/health || exit 1"] interval: 10s timeout: 3s retries: 10 start_period: 20s restart: unless-stopped networks: - suitecoffee-net suitecoffee-auth: image: node:20-bookworm container_name: suitecoffee-auth depends_on: suitecoffee-db: condition: service_healthy ports: - 4000:4000 working_dir: /app user: "${UID:-1000}:${GID:-1000}" volumes: - ./services/app:/app:rw - ./node_modules:/app/node_modules env_file: - ./services/auth/.env.development environment: - NODE_ENV=${NODE_ENV} command: npm run dev restart: unless-stopped healthcheck: test: ["CMD-SHELL", "curl -fsS http://localhost:${AUTH_DOCKER_PORT}/health || exit 1"] interval: 10s timeout: 3s retries: 10 start_period: 15s networks: - suitecoffee-net suitecoffee-db: image: postgres:16 container_name: suitecoffee-db environment: POSTGRES_DB: ${DB_NAME} POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASS} ports: - ${DB_LOCAL_PORT}:${DB_DOCKER_PORT} volumes: - dev-suitecoffee-data:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] interval: 5s timeout: 3s retries: 20 start_period: 10s networks: - suitecoffee-net suitecoffee-tenants: image: postgres:16 container_name: suitecoffee-tenants environment: POSTGRES_DB: ${TENANTS_DB_NAME} POSTGRES_USER: ${TENANTS_DB_USER} POSTGRES_PASSWORD: ${TENANTS_DB_PASS} volumes: - dev-tenants-data:/var/lib/postgresql/data ports: - ${TENANTS_DB_LOCAL_PORT}:${TENANTS_DB_DOCKER_PORT} restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U ${TENANTS_DB_USER} -d ${TENANTS_DB_NAME}"] interval: 5s timeout: 3s retries: 20 start_period: 10s networks: - suitecoffee-net suitecoffee-dbeaver: image: dbeaver/cloudbeaver:latest container_name: suitecoffee-dbeaver depends_on: suitecoffee-tenants: condition: service_healthy suitecoffee-db: condition: service_healthy restart: unless-stopped ports: - 8978:8978 volumes: - dev-dbeaver_logs:/opt/cloudbeaver/logs - dev-dbeaver_workspace:/opt/cloudbeaver/workspace networks: - suitecoffee-net # suitecoffee-adminer: # image: adminer:latest # container_name: suitecoffee-adminer # restart: unless-stopped # ports: # - 8080:8080 # depends_on: # suitecoffee-tenants: # condition: service_healthy # suitecoffee-db: # condition: service_healthy # networks: # - suitecoffee-net volumes: dev-tenants-data: dev-suitecoffee-data: dev-npm_data: dev-npm_letsencrypt: dev-dbeaver_logs: dev-dbeaver_workspace: networks: suitecoffee-net: driver: bridge