services: relay: build: . container_name: nostr-ts-relay environment: PORT: 8008 NOSTR_CONFIG_DIR: /home/node/ DB_HOST: db DB_PORT: 5432 DB_USER: nostr_ts_relay DB_PASSWORD: nostr_ts_relay DB_NAME: nostr_ts_relay DB_MIN_POOL_SIZE: 2 DB_MAX_POOL_SIZE: 10 REDIS_HOST: cache REDIS_PORT: 6379 REDIS_USER: default REDIS_PASSWORD: nostr_ts_relay DEBUG: "worker:*" user: node:node volumes: - $HOME/.nostr:/home/node/ ports: - 8008:8008 depends_on: cache: condition: service_healthy db: condition: service_healthy migrations: condition: service_completed_successfully restart: on-failure networks: default: ipv4_address: 10.10.10.2 db: image: postgres container_name: db environment: POSTGRES_USER: nostr_ts_relay POSTGRES_PASSWORD: nostr_ts_relay volumes: - pgdata:/var/lib/postgresql/data/ networks: default: ipv4_address: 10.10.10.3 restart: always healthcheck: test: ["CMD-SHELL", "pg_isready -U nostr_ts_relay"] interval: 5s timeout: 5s retries: 5 cache: image: redis:7.0.5-alpine3.16 container_name: cache volumes: - cache:/data command: redis-server --save 20 1 --loglevel warning --requirepass nostr_ts_relay networks: default: ipv4_address: 10.10.10.4 restart: always healthcheck: test: [ "CMD", "redis-cli", "ping", "|", "grep", "PONG" ] interval: 1s timeout: 5s retries: 5 migrations: image: node:18-alpine3.16 container_name: migrations environment: DB_HOST: db DB_PORT: 5432 DB_USER: nostr_ts_relay DB_PASSWORD: nostr_ts_relay DB_NAME: nostr_ts_relay entrypoint: - sh - -c - 'cd code && npm install --no-save --quiet knex@2.3.0 pg@8.8.0 && npx knex migrate:latest' volumes: - ./migrations:/code/migrations - ./knexfile.js:/code/knexfile.js depends_on: - db networks: default: ipv4_address: 10.10.10.254 networks: default: name: nostr-ts-relay ipam: driver: default config: - subnet: 10.10.10.0/24 volumes: pgdata: cache: