services:
    # PostgreSQL Database
    postgres:
        image: postgres:16-alpine
        container_name: memos-postgres
        restart: unless-stopped
        environment:
            POSTGRES_DB: memos
            POSTGRES_USER: memos
            POSTGRES_PASSWORD: zcA3LEfW
            PGDATA: /var/lib/postgresql/data/pgdata
        volumes:
            - postgres_data:/var/lib/postgresql/data
        healthcheck:
            test: ["CMD-SHELL", "pg_isready -U memos -d memos"]
            interval: 10s
            timeout: 5s
            retries: 5
        networks:
            - homelab

    # Memos Application
    memos:
        build:
            context: .
            dockerfile: Dockerfile
        container_name: memos-app
        restart: unless-stopped
        ports:
            - "8081:8081"
        environment:
            # Database configuration
            MEMOS_DRIVER: postgres
            MEMOS_DSN: "postgres://memos:zcA3LEfW@postgres:5432/memos?sslmode=disable"

            # Application configuration
            MEMOS_MODE: prod
            MEMOS_PORT: 8081
            MEMOS_DATA: /var/opt/memos

            # Optional: Set your instance URL
            # MEMOS_INSTANCE_URL: "https://your-domain.com"
        volumes:
            - memos_data:/var/opt/memos
        depends_on:
            postgres:
                condition: service_healthy
        networks:
            - homelab

volumes:
    postgres_data:
        driver: local
    memos_data:
        driver: local
networks:
    homelab:
        external: true
