#
# AzuraCast Docker Compose Configuration File
#
# When updating, you will be prompted to replace this file with a new
# version; you should do this whenever possible to take advantage of
# new updates.
#
# If you need to customize this file, you can create a new file named:
#   docker-compose.override.yml
# with any changes you need to make.
#
version : '2.2'

services :
  nginx_proxy :
    container_name : nginx_proxy
    image : "anatsam/azuracast-nginx-proxy"
    ports :
      - '${AZURACAST_HTTP_PORT:-80}:80'
      - '${AZURACAST_HTTPS_PORT:-443}:443'
    volumes :
      - letsencrypt:/etc/nginx/certs
      - nginx_proxy_vhosts:/etc/nginx/vhost.d
      - letsencrypt_html:/usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
    environment :
      NGINX_TIMEOUT : ${NGINX_TIMEOUT:-1800}
      DEFAULT_HOST : ${LETSENCRYPT_HOST:-azuracast.local}
    networks :
      - frontend
    depends_on :
      - web
    restart : always

  nginx_proxy_letsencrypt :
    container_name : nginx_proxy_letsencrypt
    image : "anatsam/azuracast-nginx-proxy-letsencrypt"
    volumes_from :
      - nginx_proxy
    volumes :
      - letsencrypt_acme:/etc/acme.sh
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment :
      DEFAULT_EMAIL : ${LETSENCRYPT_EMAIL}
    networks :
      - frontend
    restart : always

  web :
    container_name : azuracast_web
    image : "anatsam/azuracast_web_v2"
    # Want to customize the HTTP/S ports? Follow the instructions here:
    # https://docs.azuracast.com/en/administration/docker#using-non-standard-ports
    ports :
      - '${AZURACAST_SFTP_PORT:-2022}:2022'
    depends_on :
      - mariadb
      - stations
      - redis
    env_file : azuracast.env
    environment :
      LANG : ${LANG:-en_US.UTF-8}
      AZURACAST_DC_REVISION : 11
      AZURACAST_VERSION : ${AZURACAST_VERSION:-latest}
      AZURACAST_SFTP_PORT : ${AZURACAST_SFTP_PORT:-2022}
      VIRTUAL_HOST : ${LETSENCRYPT_HOST:-azuracast.local}
      NGINX_TIMEOUT : ${NGINX_TIMEOUT:-1800}
      LETSENCRYPT_HOST : ${LETSENCRYPT_HOST}
      LETSENCRYPT_EMAIL : ${LETSENCRYPT_EMAIL}
    volumes :
      - letsencrypt:/etc/nginx/certs:ro
      - www_vendor:/var/azuracast/www/vendor
      - tmp_data:/var/azuracast/www_tmp
      - station_data:/var/azuracast/stations
      - shoutcast2_install:/var/azuracast/servers/shoutcast2
      - geolite_install:/var/azuracast/geoip
      - sftpgo_data:/var/azuracast/sftpgo/persist
      - backups:/var/azuracast/backups
    networks :
      - frontend
      - backend
    restart : always
    ulimits : &default-ulimits
      nofile :
        soft : 65536
        hard : 65536
    logging : &default-logging
      options :
        max-size : "1m"
        max-file : "5"

  mariadb :
    container_name : azuracast_mariadb
    image : "anatsam/azuracast-db"
    volumes :
      - db_data:/var/lib/mysql
    env_file : azuracast.env
    networks :
      - backend
    restart : always
    logging : *default-logging

  redis :
    container_name : azuracast_redis
    image : "anatsam/azuracast-redis"
    sysctls :
      net.core.somaxconn : 1024
    volumes :
      - redis_data:/data
    networks :
      - backend
    restart : always
    logging : *default-logging

  stations :
    container_name : azuracast_stations
    image : "anatsam/azuracast-radio"
    ports :
      # This default mapping is the outgoing and incoming ports for the first 50 stations.
      # You can override this port mapping in your own docker-compose.override.yml file.
      # For instructions, see:
      # https://docs.azuracast.com/en/administration/docker#expanding-the-station-port-range
      - '8000:8000'
      - '8005:8005'
      - '8006:8006'
      - '8010:8010'
      - '8015:8015'
      - '8016:8016'
      - '8020:8020'
      - '8025:8025'
      - '8026:8026'
      - '8030:8030'
      - '8035:8035'
      - '8036:8036'
      - '8040:8040'
      - '8045:8045'
      - '8046:8046'
      - '8050:8050'
      - '8055:8055'
      - '8056:8056'
      - '8060:8060'
      - '8065:8065'
      - '8066:8066'
      - '8070:8070'
      - '8075:8075'
      - '8076:8076'
      - '8090:8090'
      - '8095:8095'
      - '8096:8096'
      - '8100:8100'
      - '8105:8105'
      - '8106:8106'
      - '8110:8110'
      - '8115:8115'
      - '8116:8116'
      - '8120:8120'
      - '8125:8125'
      - '8126:8126'
      - '8130:8130'
      - '8135:8135'
      - '8136:8136'
      - '8140:8140'
      - '8145:8145'
      - '8146:8146'
      - '8150:8150'
      - '8155:8155'
      - '8156:8156'
      - '8160:8160'
      - '8165:8165'
      - '8166:8166'
      - '8170:8170'
      - '8175:8175'
      - '8176:8176'
      - '8180:8180'
      - '8185:8185'
      - '8186:8186'
      - '8190:8190'
      - '8195:8195'
      - '8196:8196'
      - '8200:8200'
      - '8205:8205'
      - '8206:8206'
      - '8210:8210'
      - '8215:8215'
      - '8216:8216'
      - '8220:8220'
      - '8225:8225'
      - '8226:8226'
      - '8230:8230'
      - '8235:8235'
      - '8236:8236'
      - '8240:8240'
      - '8245:8245'
      - '8246:8246'
      - '8250:8250'
      - '8255:8255'
      - '8256:8256'
      - '8260:8260'
      - '8265:8265'
      - '8266:8266'
      - '8270:8270'
      - '8275:8275'
      - '8276:8276'
      - '8280:8280'
      - '8285:8285'
      - '8286:8286'
      - '8290:8290'
      - '8295:8295'
      - '8296:8296'
      - '8300:8300'
      - '8305:8305'
      - '8306:8306'
      - '8310:8310'
      - '8315:8315'
      - '8316:8316'
      - '8320:8320'
      - '8325:8325'
      - '8326:8326'
      - '8330:8330'
      - '8335:8335'
      - '8336:8336'
      - '8340:8340'
      - '8345:8345'
      - '8346:8346'
      - '8350:8350'
      - '8355:8355'
      - '8356:8356'
      - '8360:8360'
      - '8365:8365'
      - '8366:8366'
      - '8370:8370'
      - '8375:8375'
      - '8376:8376'
      - '8380:8380'
      - '8385:8385'
      - '8386:8386'
      - '8390:8390'
      - '8395:8395'
      - '8396:8396'
      - '8400:8400'
      - '8405:8405'
      - '8406:8406'
      - '8410:8410'
      - '8415:8415'
      - '8416:8416'
      - '8420:8420'
      - '8425:8425'
      - '8426:8426'
      - '8430:8430'
      - '8435:8435'
      - '8436:8436'
      - '8440:8440'
      - '8445:8445'
      - '8446:8446'
      - '8450:8450'
      - '8455:8455'
      - '8456:8456'
      - '8460:8460'
      - '8465:8465'
      - '8466:8466'
      - '8470:8470'
      - '8475:8475'
      - '8476:8476'
      - '8480:8480'
      - '8485:8485'
      - '8486:8486'
      - '8490:8490'
      - '8495:8495'
      - '8496:8496'
    volumes :
      - station_data:/var/azuracast/stations
      - shoutcast2_install:/var/azuracast/servers/shoutcast2
      - letsencrypt:/etc/nginx/certs
      - tmp_data:/var/azuracast/www_tmp
    networks :
      - frontend
      - backend
    init : true
    restart : always
    ulimits : *default-ulimits
    logging : *default-logging

networks :
  frontend :
    driver : bridge
  backend :
    driver : bridge

volumes :
  nginx_proxy_vhosts : { }
  db_data : { }
  letsencrypt : { }
  letsencrypt_html : { }
  letsencrypt_acme : { }
  shoutcast2_install : { }
  geolite_install : { }
  sftpgo_data : { }
  station_data : { }
  www_vendor : { }
  tmp_data : { }
  redis_data : { }
  backups : { }