| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- version: '3.8'
- services:
- portainer:
- image: portainer/portainer-ce:latest
- container_name: portainer
- restart: always
- ports:
- - "8000:8000"
- - "9000:9000"
- - "9443:9443"
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- - portainer_data:/data
- - /backups/docker/portainer:/backups
- - /etc/localtime:/etc/localtime
- environment:
- - TZ=Europe/Tallinn
- - LANG=C.UTF-8
- networks:
- - ai_network
- postgres:
- image: kartoza/postgis:16
- container_name: postgres_postgis
- restart: always
- ports:
- - "5432:5432"
- environment:
- POSTGRES_USER: ai_user
- POSTGRES_PASSWORD: ai_secure_pass_2026
- POSTGRES_DB: research_db
- POSTGRES_INITDB_ARGS: "-c shared_buffers=256MB -c max_connections=200"
- PGDATA: /var/lib/postgresql/data/pgdata
- TZ: Europe/Tallinn
- LANG: C.UTF-8
- mem_limit: 4g
- volumes:
- - postgres_data:/var/lib/postgresql/data
- - ./init-db:/docker-entrypoint-initdb.d
- - /backups/docker/postgres:/backups
- - /etc/localtime:/etc/localtime
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U ai_user -d research_db"]
- interval: 10s
- timeout: 5s
- retries: 5
- networks:
- - ai_network
- mariadb:
- image: mariadb:11
- container_name: mariadb
- restart: always
- ports:
- - "3306:3306"
- environment:
- MYSQL_ROOT_PASSWORD: ai_root_pass_2026
- MYSQL_DATABASE: research_mariadb
- MYSQL_USER: ai_mariadb_user
- MYSQL_PASSWORD: ai_mariadb_pass_2026
- TZ: Europe/Tallinn
- LANG: C.UTF-8
- mem_limit: 4g
- volumes:
- - mariadb_data:/var/lib/mysql
- - /backups/docker/mariadb:/backups
- - /etc/localtime:/etc/localtime
- healthcheck:
- test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-uai_mariadb_user", "-pai_mariadb_pass_2026"]
- interval: 10s
- timeout: 5s
- retries: 5
- networks:
- - ai_network
- weaviate:
- mem_limit: 4g
- image: semitechnologies/weaviate:1.28.0
- container_name: weaviate
- restart: always
- ports:
- - "8080:8080"
- - "50051:50051"
- environment:
- QUERY_DEFAULTS_LIMIT: 25
- AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
- PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
- DEFAULT_VECTORIZER_MODULE: 'none'
- CLUSTER_HOSTNAME: 'weaviate'
- LANG: C.UTF-8
- volumes:
- - weaviate_data:/var/lib/weaviate
- - /backups/docker/weaviate:/backups
- - /etc/localtime:/etc/localtime
- networks:
- - ai_network
- # Qdrant vektoriandmebaas (toetab Open WebUI)
- qdrant:
- mem_limit: 4g
- image: qdrant/qdrant:v1.18.2
- container_name: qdrant
- restart: unless-stopped
- ports:
- - "6333:6333" # REST API
- - "6334:6334" # gRPC API
- environment:
- TZ: Europe/Tallinn
- LANG: C.UTF-8
- volumes:
- - qdrant_data:/qdrant/storage
- - ./qdrant-config.yaml:/qdrant/config/production.yaml:ro
- - /backups/docker/qdrant:/backups
- - /etc/localtime:/etc/localtime
- networks:
- - ai_network
- healthcheck:
- test: ["CMD", "bash", "-c", "</dev/tcp/localhost/6333"]
- interval: 30s
- timeout: 10s
- retries: 3
- start_period: 10s
- jupyter:
- mem_limit: 8g
- image: jupyter/datascience-notebook:python-3.11
- container_name: jupyter
- restart: always
- ports:
- - "8887:8888"
- environment:
- - JUPYTER_ENABLE_LAB=yes
- - JUPYTER_TOKEN=ai_server_2026
- - LANG=C.UTF-8
- #- TZ=Europe/Tallinn
- volumes:
- - /data/docker/jupyter/notebooks:/home/jovyan/work
- - /data/docker/jupyter/data:/home/jovyan/data
- - jupyter_data:/home/jovyan/.jupyter
- - /backups/docker/jupyter:/backups
- - /etc/localtime:/etc/localtime
- networks:
- - ai_network
- command: start-notebook.sh --NotebookApp.token='ai_server_2026' --NotebookApp.allow_root=True
- rocm-pytorch:
- image: rocm/pytorch:latest
- container_name: rocm_pytorch
- restart: always
- ports:
- - "8889:8888"
- - "6006:6006"
- environment:
- - HSA_OVERRIDE_GFX_VERSION=11.5.1
- - PYTORCH_ROCM_ARCH=gfx1151
- - ROCM_HOME=/opt/rocm
- - TZ=Europe/Tallinn
- - LANG=C.UTF-8
- - TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL=1
- devices:
- - /dev/kfd:/dev/kfd
- - /dev/dri:/dev/dri
- volumes:
- - /data/docker/jupyter/pytorch-workspace:/workspace
- - /data/docker/jupyter/models:/models
- - /data/docker/jupyter/data:/data
- - rocm_pytorch_data:/root/.cache
- - /backups/docker/rocm-pytorch:/backups
- - /etc/localtime:/etc/localtime
- working_dir: /workspace
- cap_add:
- - SYS_PTRACE
- security_opt:
- - seccomp=unconfined
- ipc: host
- shm_size: 8G
- group_add:
- - video
- networks:
- - ai_network
- command: >
- bash -c "pip install jupyter notebook tensorboard transformers datasets huggingface_hub scikit-learn pandas psycopg2-binary &&
- jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.token='ai_pytorch_2026'"
- rag-api:
- mem_limit: 4g
- build:
- context: /opt/docker-compose/main/Dockerfile/rag-api
- dockerfile: Dockerfile
- container_name: rag_api
- restart: always
- ports:
- - "8072:8000"
- environment:
- LLAMA_CPP_URL: http://100.87.1.24:8070/completion
- WEAVIATE_HOST: weaviate
- WEAVIATE_HTTP_PORT: 8080
- WEAVIATE_URL: http://weaviate:8080
- WEAVIATE_CLASS: ScientificArticle
- DB_HOST: postgres
- DB_PORT: 5432
- DB_NAME: pdf_research
- DB_USER: osm
- DB_PASSWORD: osm
- OLLAMA_URL: http://100.87.1.24:11434
- TZ: Europe/Tallinn
- LANG: C.UTF-8
- MARIADB_HOST: mariadb
- MARIADB_PORT: 3306
- MARIADB_DB: research_mariadb
- MARIADB_USER: ai_mariadb_user
- MARIADB_PASSWORD: ai_mariadb_pass_2026
- volumes:
- - /data/docker/rag-api/src:/app/src
- - /backups/docker/rag-api:/backups
- - /etc/localtime:/etc/localtime
- depends_on:
- - weaviate
- - postgres
- networks:
- - ai_network
- healthcheck:
- test: ["CMD", "true"]
- interval: 30s
- timeout: 10s
- retries: 3
- start_period: 40s
- volumes:
- portainer_data:
- driver: local
- postgres_data:
- driver: local
- weaviate_data:
- driver: local
- jupyter_data:
- driver: local
- rocm_pytorch_data:
- driver: local
- mariadb_data:
- driver: local
- qdrant_data:
- external: true
- name: qdrant_data
- networks:
- ai_network:
- driver: bridge
|