services:
  redis:
    restart: unless-stopped
    image: redis:7-alpine
    networks:
      - internal_network
    volumes:
      - ./redis:/data

  web:
    image: ghcr.io/mastodon/mastodon:v4.5.7
    restart: unless-stopped
    env_file: .env.production
    command: bundle exec puma -C config/puma.rb
    networks:
      - external_network
      - internal_network
    ports:
      - '3000:3000'
    depends_on:
      - redis
    volumes:
      - ./public/system:/mastodon/public/system

  streaming:
    image: ghcr.io/mastodon/mastodon-streaming:v4.5.7
    restart: unless-stopped
    env_file: .env.production
    networks:
      - external_network
      - internal_network
    ports:
      - '4000:4000'
    depends_on:
      - redis

  sidekiq:
    image: ghcr.io/mastodon/mastodon:v4.5.7
    restart: unless-stopped
    env_file: .env.production
    command: bundle exec sidekiq
    networks:
      - external_network
      - internal_network
    depends_on:
      - redis
    volumes:
      - ./public/system:/mastodon/public/system

networks:
  external_network:
  internal_network:
    internal: true
