name: sim-eventos networks: default: driver: bridge name: network-test # Tiene que coincidir con el compose objetivo services: rabbitmq-sim-broker: container_name: rabbitmq-sim-broker image: "rabbitmq:4.2.2-management" ports: - "5672:5672" - "15672:15672" env_file: - .env restart: unless-stopped healthcheck: test: ["CMD", "rabbitmq-diagnostics", "check_port_connectivity"] interval: 10s timeout: 5s retries: 5 environment: RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD} volumes: - ./rabbitmq_plugins/enabled_plugins:/etc/rabbitmq/enabled_plugins:ro - ./deployment/local/rabbit/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro - ./deployment/local/rabbit/definitions.json:/etc/rabbitmq/definitions.json:ro sf-sims-api: container_name: sf-sims-api image: sf-sims-api build: context: ./ dockerfile: deployment/local/docker/Dockerfile.dev args: PORT: "${PORT:-3000}" develop: watch: - path: ./packages action: sync target: /usr/local/app/packages - path: ./package.json action: rebuild ports: - ${PORT}:${PORT} env_file: - .env restart: unless-stopped healthcheck: test: [ "CMD-SHELL", 'node -e "fetch(''http://localhost:'' + (process.env.PORT || 3000) + ''/health'').then(r => { if (!r.ok) process.exit(1) }).catch(() => process.exit(1))"', ] interval: 10s timeout: 5s retries: 5 start_period: 15s depends_on: rabbitmq-sim-broker: condition: service_healthy postgresql-sim: condition: service_healthy postgresql-sim: container_name: postgresql-sim image: postgres:16.1 env_file: - .env ports: - "${POSTGRES_PORT}:${POSTGRES_PORT}" volumes: - ./sql-data/:/var/lib/postgres/data - ./deployment/database/init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s retries: 5 start_period: 5s timeout: 5s