The dev and prod stacks each declared the same nine services, which is how the S3 credentials and the gateway configuration ended up diverging. compose.yml now holds every service with no published port and no domain in it, and the overlays only add what is specific: host ports and pgAdmin for development, the nginx edge and the mounted secrets for production. The applications sit behind the `apps` profile, so a plain `up` still starts infrastructure only. Everything environment-specific moves to the env files: the public URLs, the credentials and the environment name. The SeaweedFS identity file is rendered inside the container from S3_ACCESS_KEY and S3_SECRET_KEY, so the store and the applications can no longer be given different keys.
81 lines
2.0 KiB
YAML
81 lines
2.0 KiB
YAML
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
|
|
|
|
# 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:
|