services: nginx: image: ghcr.io/pipe-bomb/proxy:latest ports: - "${HTTP_PORT:-9193}:9193" depends_on: - api - frontend restart: unless-stopped api-init: image: alpine command: - sh - -c - >- mkdir -p /data /resources /cache /plugin-cache /plugins /temp /secrets && chown 100:101 /data /resources /cache /plugin-cache /plugins /temp /secrets && chmod 750 /data /resources /cache && chmod 777 /plugins /plugin-cache /temp && chmod 700 /secrets volumes: - ${DATA_PATH:-./data/data}:/data - ${RESOURCES_PATH:-./data/resources}:/resources - ${AUDIO_CACHE_PATH:-./data/cache}:/cache - ${PLUGIN_CACHE_PATH:-./data/plugin-cache}:/plugin-cache - ${PLUGINS_PATH:-./data/plugins}:/plugins - ${TEMP_PATH:-./data/temp}:/temp - ${SECRETS_PATH:-./data/secrets}:/secrets restart: "no" api: image: ghcr.io/pipe-bomb/server:latest depends_on: api-init: condition: service_completed_successfully environment: BASE_PATH: /api CORS: ${PUBLIC_URL:-} NODE_ENV: production DB_FILE: /app/data/pipe-bomb.sqlite volumes: - ${DATA_PATH:-./data/data}:/app/data - ${RESOURCES_PATH:-./data/resources}:/app/resources - ${AUDIO_CACHE_PATH:-./data/cache}:/app/audio-cache - ${PLUGIN_CACHE_PATH:-./data/plugin-cache}:/app/plugin-cache - ${PLUGINS_PATH:-./data/plugins}:/app/plugins - ${TEMP_PATH:-./data/temp}:/app/temp - ${SECRETS_PATH:-./data/secrets}:/app/.secrets - ${MUSIC_PATH:-./data/music}:/music:ro restart: unless-stopped frontend: image: ghcr.io/pipe-bomb/frontend:latest environment: INTERNAL_API_URL: http://api:3000 restart: unless-stopped