services: icecast: image: infiniteproject/icecast:latest container_name: asteroid-icecast ports: - "${ICECAST_BIND:-127.0.0.1}:8000:8000" volumes: - ./icecast.xml:/etc/icecast.xml environment: - ICECAST_SOURCE_PASSWORD=H1tn31EhsyLrfRmo - ICECAST_ADMIN_PASSWORD=asteroid_admin_2024 - ICECAST_RELAY_PASSWORD=asteroid_relay_2024 restart: unless-stopped networks: - asteroid-network liquidsoap: build: context: . dockerfile: Dockerfile.liquidsoap container_name: asteroid-liquidsoap ports: - "127.0.0.1:1234:1234" depends_on: - icecast volumes: - ${MUSIC_LIBRARY:-../music/library}:/app/music:ro - ./asteroid-radio-docker.liq:/app/asteroid-radio.liq:ro - ${QUEUE_PLAYLIST:-../playlists/stream-queue.m3u}:/app/stream-queue.m3u:ro restart: unless-stopped networks: - asteroid-network postgres: image: postgres:17-alpine container_name: asteroid-postgres environment: - POSTGRES_DB=${ASTEROID_DB_NAME:-asteroid} - POSTGRES_USER=${ASTEROID_DB_USER:-asteroid} - POSTGRES_PASSWORD=${ASTEROID_DB_PASSWORD:-asteroid_db_2025} ports: - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data - ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql:ro restart: unless-stopped networks: - asteroid-network healthcheck: test: ["CMD-SHELL", "pg_isready -U asteroid"] interval: 10s timeout: 5s retries: 5 networks: asteroid-network: driver: bridge volumes: postgres-data: driver: local