Skip to content
Snippets Groups Projects
docker-compose.yml 2.95 KiB
Newer Older
services:
  postgres:
    image: postgres:13
    environment:
      POSTGRES_DB: $TANK_POSTGRES_DB
      POSTGRES_USER: $TANK_POSTGRES_USER
      POSTGRES_PASSWORD: $TANK_POSTGRES_PASSWORD

  steering:
    image: autoradio/steering:unstable
    entrypoint: ['/bin/bash']
    env_file: [env]
    environment:
      DJANGO_SUPERUSER_EMAIL: admin@example.org
      DJANGO_SUPERUSER_USERNAME: $ADMIN_USERNAME
      DJANGO_SUPERUSER_PASSWORD: $ADMIN_PASSWORD
    command:
      - '-c'
      - |
        cat >>/app/steering/settings.py <<EOF
        CORS_ALLOWED_ORIGINS = ["$DASHBOARD_ORIGIN"]
        ALLOWED_HOSTS = ["*"]
        DEBUG = True
        SITE_URL = "$STEERING_ORIGIN"
        EOF

  tank:
    image: autoradio/tank:unstable
    entrypoint: ['/bin/bash']
    depends_on:
      - postgres
      - steering
    env_file: [env]
    command:
      - '-c'
      - |
        # make sure postgres is up before starting tank
        while true; do
          timeout 0.25 cat >/dev/null 2>&1 </dev/tcp/postgres/5432
          if [ "$?" = 124 ]; then break; fi
        done
        cat >/tmp/tank.yaml <<EOF
        store:
          path: /srv/audio
          audio:
            format: flac
            sample-rate: 44100
          db:
            type: postgres
            host: postgres
            tls: disable
            username: tank
            password: aura
            database: tank

        importer:
          temp-path: /srv/import-temp
          workers: 4
          normalizer: ffmpeg

        auth:
          sessions:
            max-age: 12h
            static:
              engine:
                secret: no-secret
                readonly: true
                all-shows: true
          oidc:
            issuer-url: "$STEERING_ORIGIN/openid"
            client-id: 123456
            client-secret: "$TANK_OIDC_CLIENT_SECRET"
            callback-url: "$TANK_ORIGIN/auth/oidc/callback"
            login-timeout: 10m

        web:
          cors:
            allowed-origins: ['$DASHBOARD_ORIGIN']
            allowed-methods:
              - GET
              - PUT
              - POST
              - PATCH
              - DELETE
            allowed-headers: ['*']
            allow-credentials: true
            debug: true
        EOF
        while true; do
          timeout 0.25 cat >/dev/null 2>&1 <"/dev/tcp/$STEERING_HOST/$STEERING_PORT"
          if [ "$?" = 124 ]; then break; fi
        done
        /usr/local/bin/tank --config /tmp/tank.yaml run --listen ":$TANK_PORT"

  dashboard-test:
    build:
      context: ..
      dockerfile: tests/Dockerfile
    entrypoint: ['/bin/bash']
    depends_on:
      - steering
      - tank
    working_dir: /home/pwuser/app
    user: pwuser
    env_file: [env]
    command:
      - '-c'
      - |
        make build
        wait-for-it -t 0 -h "$STEERING_HOST" -p "$STEERING_PORT"
        wait-for-it -t 0 -h "$TANK_HOST" -p "$TANK_PORT"
        make test-local
    volumes:
      - ../:/home/pwuser/app