version: '3.8'

services:
    open-archiver:
        image: logiclabshq/open-archiver:latest
        container_name: open-archiver
        restart: unless-stopped
        ports:
            - '3000:3000' # Frontend
        env_file:
            - .env
        volumes:
            - ${STORAGE_LOCAL_ROOT_PATH}:${STORAGE_LOCAL_ROOT_PATH}
        depends_on:
            - postgres
            - valkey
            - meilisearch
        networks:
            - open-archiver-net

    postgres:
        image: postgres:17-alpine
        container_name: postgres
        restart: unless-stopped
        environment:
            POSTGRES_DB: ${POSTGRES_DB:-open_archive}
            POSTGRES_USER: ${POSTGRES_USER:-admin}
            POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password}
        volumes:
            - pgdata:/var/lib/postgresql/data
        networks:
            - open-archiver-net

    valkey:
        image: valkey/valkey:8-alpine
        container_name: valkey
        restart: unless-stopped
        command: valkey-server --requirepass ${REDIS_PASSWORD}
        volumes:
            - valkeydata:/data
        networks:
            - open-archiver-net

    meilisearch:
        image: getmeili/meilisearch:v1.15
        container_name: meilisearch
        restart: unless-stopped
        environment:
            MEILI_MASTER_KEY: ${MEILI_MASTER_KEY:-aSampleMasterKey}
            MEILI_SCHEDULE_SNAPSHOT: ${MEILI_SCHEDULE_SNAPSHOT:-86400}
        volumes:
            - meilidata:/meili_data
        networks:
            - open-archiver-net

    tika:
        image: apache/tika:3.2.2.0-full
        container_name: tika
        restart: always
        networks:
            - open-archiver-net

volumes:
    pgdata:
        driver: local
    valkeydata:
        driver: local
    meilidata:
        driver: local

networks:
    open-archiver-net:
        driver: bridge
