name: musify-dev # Development overlay: publishes the infrastructure ports to the host so the # .NET apps and the web player can run from the IDE, and adds pgAdmin. # # docker compose -f deploy/compose.yml -f deploy/compose.dev.yml up -d # docker compose -f deploy/compose.yml -f deploy/compose.dev.yml --profile apps up -d --build # # `host.docker.internal` (see ZITADEL_EXTERNAL_DOMAIN / *_PUBLIC_URL in .env) # resolves to the same address from the browser, from apps on the host and from # inside the containers, so the OIDC issuer and the presigned S3 URLs are valid # in both modes. `extra_hosts` gives Linux containers that same name. x-host-alias: &host-alias - "${ZITADEL_EXTERNAL_DOMAIN}:host-gateway" services: postgres: ports: - "${POSTGRES_HOST_PORT}:5432" zitadel: ports: - "${ZITADEL_EXTERNAL_PORT}:8080" rabbitmq: ports: - "5672:5672" # AMQP -> MassTransit - "15672:15672" # management UI seaweedfs: ports: - "9333:9333" # master / admin UI - "8888:8888" # filer -> StreamingGateway - "8333:8333" # S3 API -> API, Worker and presigned uploads jaeger: ports: - "16686:16686" # UI - "4317:4317" # OTLP gRPC - "4318:4318" # OTLP HTTP # zitadel-init (compose.yml) edits whichever env file is mounted here. zitadel-init: volumes: - ./.env:/workspace/.env # Optional Postgres UI: docker compose ... --profile tools up -d pgadmin: profiles: [tools] image: dpage/pgadmin4:latest container_name: musify-pgadmin environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD} PGADMIN_CONFIG_SERVER_MODE: "False" depends_on: postgres: condition: service_healthy ports: - "${PGADMIN_HOST_PORT}:80" volumes: - pgadmin_data:/var/lib/pgadmin restart: unless-stopped api: ports: - "5111:5111" extra_hosts: *host-alias worker: extra_hosts: *host-alias gateway: ports: - "8081:8081" extra_hosts: *host-alias web-player: ports: - "3000:3000" extra_hosts: *host-alias volumes: pgadmin_data: