# Docker Compose para Desenvolvimento # Para produção, veja docker/production/docker-compose.yml services: # MongoDB - Banco de dados mongodb: image: mongo:8 container_name: course-plat-mongodb restart: unless-stopped ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME:-admin} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD:-password} MONGO_INITDB_DATABASE: ${MONGO_DB:-course-plat} volumes: - mongodb_data:/data/db - mongodb_config:/data/configdb healthcheck: test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet interval: 30s timeout: 10s retries: 3 networks: - course-plat-network # MongoDB Express (opcional - UI para o MongoDB) mongo-express: image: mongo-express:latest container_name: course-plat-mongo-express restart: unless-stopped ports: - "8081:8081" environment: ME_CONFIG_MONGODB_URL: mongodb://${MONGO_USERNAME:-admin}:${MONGO_PASSWORD:-password}@mongodb:27017/ ME_CONFIG_BASICAUTH_USERNAME: ${MONGO_EXPR_USER:-admin} ME_CONFIG_BASICAUTH_PASSWORD: ${MONGO_EXPR_PASS:-admin} depends_on: mongodb: condition: service_healthy networks: - course-plat-network # MinIO - Armazenamento de arquivos (S3 compatible) minio: image: minio/minio:latest container_name: course-plat-minio restart: unless-stopped ports: - "9000:9000" # API - "9001:9001" # Console (UI) environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} volumes: - minio_data:/data command: server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 networks: - course-plat-network # MinIO Init - Cria bucket privado automaticamente minio-init: image: minio/mc:latest container_name: course-plat-minio-init depends_on: - minio entrypoint: > sh -c " sleep 5 && mc alias set myminio http://minio:9000 ${MINIO_ROOT_USER:-minioadmin} ${MINIO_ROOT_PASSWORD:-minioadmin} && mc mb myminio/${MINIO_BUCKET:-course-plat} --ignore-existing && mc anonymous set none myminio/${MINIO_BUCKET:-course-plat} && echo 'MinIO initialized! Bucket is private.' " restart: "no" networks: - course-plat-network volumes: mongodb_data: driver: local mongodb_config: driver: local minio_data: driver: local networks: course-plat-network: driver: bridge