version: '2' services: main: build: ./docker-liquidsoap volumes: - ./state/liquidsoap/config:/config - ./state/playlists:/playlists - ./state/liquidsoap/data:/data - ./state/jingles:/jingles - /etc/localtime:/etc/localtime:ro command: /bin/bash -xc 'env; liquidsoap -v --debug /config/main.liq' environment: - HARBOR_PASSWORD=MGT7aEqP - LIVE_PASSWORD=fuckyoujoa - BROADCAST_PORT_5001_TCP_ADDR=broadcast - BROADCAST_PORT_5001_TCP_PORT=5001 links: - icecast ports: - 8021:5001 - 8022:5002 - 127.0.0.1:5000:5000 restart: on-failure broadcast: build: ./docker-liquidsoap volumes: - ./state/liquidsoap/config:/config - /etc/localtime:/etc/localtime:ro command: /bin/bash -xc 'env; liquidsoap -v --debug /config/broadcast.liq' environment: - HARBOR_PASSWORD=MGT7aEqP - ICECAST_PORT_8000_TCP_ADDR=icecast - ICECAST_PORT_8000_TCP_PORT=8000 - ICECAST_SOURCE_PASSWORD=KUsFNWgh links: - icecast restart: on-failure icecast: image: moul/icecast volumes: - /etc/localtime:/etc/localtime:ro environment: - ICECAST_SOURCE_PASSWORD=KUsFNWgh - ICECAST_ADMIN_PASSWORD=admin - ICECAST_PASSWORD=Bk3H7UM8 - ICECAST_RELAY_PASSWORD=hackme labels: - traefik.enable=true - traefik.frontend.rule=Host:icecast.radio.dodsorf.as - traefik.port=8000 - traefik.backend=icecast - traefik.domain=dodsorf.as - traefik.docker.network=reverse networks: - reverse - default web: build: ./web environment: - MAIN_PORT_5000_TCP=tcp://main:5000 links: - main volumes: - ./state/playlists:/playlists labels: - traefik.enable=true - traefik.frontend.rule=Host:radio.dodsorf.as - traefik.port=80 - traefik.backend=webradio - traefik.domain=dodsorf.as - traefik.docker.network=reverse networks: - reverse - default networks: reverse: external: name: reverse