Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# songbird — how to run it.
#
# songbird reads Scripture from Concord, a separate Scripture engine that runs on the
# network. songbird keeps only your notes; Concord provides the Bible text, the search
# and the maps. So there are two ways to start, and you only need one of them.
#
#   A. You don't have Concord yet. Start both together — songbird plus a ready-made
#      Concord it downloads for you:
#
#          docker compose --profile bundled-concord up
#
#      Then open http://localhost:8077. (The first run takes a few minutes while it
#      downloads Concord and builds songbird.)
#
#      The Concord it downloads carries the public-domain translations — KJV, ASV, WEB,
#      BSB and a dozen more. That is everything most people need, and it is all a public
#      download is allowed to include: translations like the ESV or the NKJV are licensed,
#      so no public image can ship them.
#
#   B. You already run your own Concord — on this machine or anywhere on your network,
#      perhaps one you built with translations of your own. Tell songbird where it is by
#      putting a line like this in a file called .env next to this one:
#
#          CONCORD_BASE_URL=http://192.168.1.62:8000
#
#      ...then just:
#
#          docker compose up
#
#      songbird talks to that Concord and nothing else is started. Whatever translations
#      your Concord serves are the translations songbird shows.
#
# Not sure which Concord songbird ended up talking to? Open the app and click **Status**.
# It names the exact address and lists every translation it found there.

services:
  # The Scripture engine, ready-made — only for path A above.
  #
  # This is behind a "profile", which is Docker's word for a part that stays switched off
  # unless you ask for it. That's why path A passes `--profile bundled-concord` and path B
  # doesn't: if you already have your own Concord, starting a second one would just sit
  # there unused — and songbird would read the wrong one.
  concord:
    image: ghcr.io/kbennett2000/concord:v1.3.1
    profiles: ["bundled-concord"]
    restart: unless-stopped
    # Concord is only used by songbird, on this private network.
    # (We don't expose it to your whole computer — songbird talks to it internally.)
    expose:
      - "8000"
    healthcheck:
      # songbird waits until Concord is actually ready before it starts.
      test: ["CMD", "python", "-c", "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8000/healthz').status==200 else 1)"]
      interval: 10s
      timeout: 5s
      retries: 12
      start_period: 40s

  # The app you use. Built from this repo (quick — it's lightweight).
  songbird:
    build: .
    restart: unless-stopped
    ports:
      # The port songbird is reachable on, in Docker and outside it — set PORT in .env to change
      # it, then open http://localhost:<PORT>. Only the outside changes: the container keeps
      # listening on 8077.
      - "${PORT:-8077}:8077"
    environment:
      # Where songbird looks for Concord. Set CONCORD_BASE_URL in .env to point it at your
      # own Concord (path B); leave it unset and songbird uses the ready-made one this file
      # can start for you (path A). songbird makes no assumption that Concord is on this
      # machine — it calls whatever address it is given.
      CONCORD_BASE_URL: "${CONCORD_BASE_URL:-http://concord:8000}"
      # Optional: a free key for YouTube's Data API. With one, songbird can look your sermon
      # videos up on YouTube — starting with re-dating the sermon notes you already have, so
      # each one carries the day the sermon was actually preached. Without a key that feature
      # is simply switched off and nothing else changes.
      # To use it, put the key in a file called .env next to this one, on a line reading
      #     YOUTUBE_API_KEY=your-key-here
      # (docker compose reads that file automatically). Treat it like a password.
      YOUTUBE_API_KEY: "${YOUTUBE_API_KEY:-}"
      # How often songbird looks for new sermons on the channels you follow, in hours. 168 is
      # once a week, which suits a church that posts on Sundays. Set it to 0 if you would rather
      # it never went looking on its own — the "Check now" button on the page still works.
      SERMON_CHECK_INTERVAL_HOURS: "${SERMON_CHECK_INTERVAL_HOURS:-168}"
      # Videos shorter than this many minutes are skipped, which keeps clips, trailers and Shorts
      # out of your notes. It is the starting point for every channel; a single channel can be
      # given its own number on the Sermon sources page, and that one wins for that channel.
      SERMON_MIN_MINUTES: "${SERMON_MIN_MINUTES:-10}"
    volumes:
      # Your notes live here, on your computer, so they survive restarts.
      - songbird-data:/data
    depends_on:
      concord:
        condition: service_healthy
        # Only wait for the bundled Concord when it's actually being started (path A). On
        # path B it isn't, and songbird must not refuse to boot over a part nobody asked for.
        required: false

volumes:
  songbird-data: