name: sim-eventos networks: savefamily: external: true proxy: external: true internal: driver: bridge services: rabbitmq-sim-broker: container_name: rabbitmq-sim-broker image: "rabbitmq:4.2.2-management" expose: - 5672 - 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 - ./rabbit/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro - ./rabbit/definitions.json:/etc/rabbitmq/definitions.json:ro networks: - internal labels: - "io.portainer.accesscontrol.teams=develop" sf-sims-api: container_name: sf-sims-api build: context: . dockerfile: Dockerfile args: PORT: ${PORT:-3000} image: sf-sims-api env_file: - ./.env restart: unless-stopped depends_on: rabbitmq-sim-broker: condition: service_healthy postgresql-sim: condition: service_healthy networks: - savefamily - proxy - internal expose: - ${PORT} volumes: - ./.env:/home/node/app/.env:ro - ./sim-consumidor-objenious.env:/home/node/app/packages/sim-consumidor-objenious/.env:ro - ./sim-objenious-cron.env:/home/node/app/packages/sim-objenious-cron/.env:ro 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 labels: - "io.portainer.accesscontrol.teams=develop" - "traefik.enable=true" - "traefik.http.routers.sf-sims.entrypoints=web" - "traefik.http.routers.sf-sims.rule=Host(`sf-sims.savefamilygps.net`)" - "traefik.http.middlewares.sf-sims-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.sf-sims.middlewares=sf-sims-https-redirect" - "traefik.http.routers.sf-sims-secure.entrypoints=websecure" - "traefik.http.routers.sf-sims-secure.rule=Host(`sf-sims.savefamilygps.net`)" - "traefik.http.routers.sf-sims-secure.tls=true" - "traefik.http.routers.sf-sims-secure.service=sf-sims" - "traefik.http.routers.sf-sims-secure.tls.certresolver=myresolver" - "traefik.http.routers.sf-sims-secure.middlewares=tailscale-ipwhitelist@file" - "traefik.http.services.sf-sims.loadbalancer.server.port=${PORT}" - "traefik.docker.network=proxy" postgresql-sim: image: postgres:16.1 env_file: - ./.env ports: - 5432 volumes: - ./postgres:/var/lib/postgres/data - ./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 networks: - internal labels: - "io.portainer.accesscontrol.teams=develop"