stringer Docker & Self-Hosted Deployment

GitHub

A self-hosted, anti-social RSS reader.

4,130 stars Ruby Ruby 1 file ยท ~5,087 tokens #feed-reader#feedjira#rss#rss-reader#ruby
RAW Compose
1. Pull Image (DOCKERHUB) docker pull stringerrss/stringer
2. Docker Run (1-Click Launch) docker run -d --name stringer -p 80:80 --restart always stringerrss/stringer:latest
3. Podman Run podman run -d --name stringer -p 80:80 --restart always stringerrss/stringer:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/stringerrss/stringer:latest
5. ORAS Pull (OCI Artifact) oras pull stringerrss/stringer:latest
6. Compose Deployment docker compose up -d
docker-compose.yml
Download .yml
version: '3'

services:
  stringer-setup:
    image: stringerrss/stringer:latest
    container_name: stringer-setup
    restart: no
    env_file: .env
    volumes:
      - ./.env:/app/.env
    entrypoint: ["ruby"]
    command: ["/app/docker/init_or_update_env.rb"]

  stringer-postgres:
    image: postgres:18-alpine
    container_name: stringer-postgres
    restart: always
    depends_on:
      stringer-setup:
        condition: service_completed_successfully
    networks:
      - stringer-network
    volumes:
      - ./.env:/app/.env
      # Postgres 18+ images expect a single mount here and store the database
      # in a version-named subdirectory. See docs/Docker.md for upgrade steps.
      - /srv/stringer/data:/var/lib/postgresql
    env_file: .env

  stringer:
    image: stringerrss/stringer:latest
    container_name: stringer
    build: .
    depends_on:
      stringer-postgres:
        condition: service_started
      stringer-setup:
        condition: service_completed_successfully
    restart: always
    ports:
      - 80:8080
    networks:
      - stringer-network
    volumes:
      - ./.env:/app/.env
    env_file: .env

networks:
  stringer-network:
    external: false
    name: stringer-network