services:
  quot:
    image: kou029w/quot
    build: "."
    restart: unless-stopped
    ports: ["8080:8080"]
    environment:
      # https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
      QUOT_OPENID_ISSUER: ${QUOT_OPENID_ISSUER:?}
      # https://www.rfc-editor.org/rfc/rfc6749#section-2.3.1
      QUOT_OPENID_CLIENT_ID: ${QUOT_OPENID_CLIENT_ID:?}
      QUOT_OPENID_CLIENT_SECRET: ${QUOT_OPENID_CLIENT_SECRET:?}
      QUOT_JWK: ${QUOT_JWK:?} # https://jwk.pages.dev
      DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@/postgres?host=/var/run/postgresql
    volumes:
      - postgres_socket:/var/run/postgresql
    depends_on: [db]
  api:
    profiles: [dev]
    image: kou029w/quot
    build: "."
    restart: unless-stopped
    ports: ["3000:3000"]
    environment:
      DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@/postgres?host=/var/run/postgresql
      PGRST_DB_ANON_ROLE: postgres
    volumes:
      - postgres_socket:/var/run/postgresql
    depends_on:
      db:
        condition: service_healthy
  dbmate:
    profiles: [dev]
    image: amacneil/dbmate:1.16@sha256:7a93421be89475d1d7daebaa39c1627b2cead94d49e03d0afe689abb8a40175c
    command: --wait up
    user: ${UID:-1000}:${GID:-1000}
    environment:
      DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@/postgres?host=/var/run/postgresql
    volumes:
      - ./db:/db
      - postgres_socket:/var/run/postgresql
    depends_on: [db]
  db:
    image: postgres:15-alpine@sha256:09d57b502063c77d8896683ff5126187025d7b2e2b4378a896b90dced36bc083
    restart: unless-stopped
    healthcheck:
      test: pg_isready -U postgres
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - postgres_socket:/var/run/postgresql
      - postgres_data_v14:/var/lib/postgresql/data
volumes:
  postgres_socket:
  postgres_data_v14: