version: "3.4"
services:
  client_api:
    hostname: client_api
    image: matrixdotorg/dendrite-polylith:latest
    command: clientapi
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal

  media_api:
    hostname: media_api
    image: matrixdotorg/dendrite-polylith:latest
    command: mediaapi
    volumes:
      - ./config:/etc/dendrite
      - ./media:/var/dendrite/media
    networks:
      - internal

  sync_api:
    hostname: sync_api
    image: matrixdotorg/dendrite-polylith:latest
    command: syncapi
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal

  room_server:
    hostname: room_server
    image: matrixdotorg/dendrite-polylith:latest
    command: roomserver
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal

  edu_server:
    hostname: edu_server
    image: matrixdotorg/dendrite-polylith:latest
    command: eduserver
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal

  federation_api:
    hostname: federation_api
    image: matrixdotorg/dendrite-polylith:latest
    command: federationapi
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal

  federation_sender:
    hostname: federation_sender
    image: matrixdotorg/dendrite-polylith:latest
    command: federationsender
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal
      
  key_server:
    hostname: key_server
    image: matrixdotorg/dendrite-polylith:latest
    command: keyserver
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal

  signing_key_server:
    hostname: signing_key_server
    image: matrixdotorg/dendrite-polylith:latest
    command: signingkeyserver
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal

  user_api:
    hostname: user_api
    image: matrixdotorg/dendrite-polylith:latest
    command: userapi
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal

  appservice_api:
    hostname: appservice_api
    image: matrixdotorg/dendrite-polylith:latest
    command: appservice
    volumes:
      - ./config:/etc/dendrite
    networks:
      - internal
    depends_on:
      - room_server
      - user_api

networks:
  internal:
    attachable: true