version: "3.8" services: meilisearch: image: getmeili/meilisearch:latest container_name: meilisearch ports: - "7700:7700" environment: # ВАЖНО: Для продакшена установите MEILI_MASTER_KEY! # Например: MEILI_MASTER_KEY: 'your_strong_master_key' - MEILI_NO_ANALYTICS=true restart: unless-stopped volumes: - meili_data:/meili_data backend: build: ./backend container_name: backend ports: - "8000:8000" env_file: .env # Файл с переменными окружения (включая MEILI_API_KEY, если используется) volumes: # LOCAL_STORAGE_PATH должен быть определен в .env - ${LOCAL_STORAGE_PATH}:/mnt/storage:ro # Монтируем только для чтения depends_on: - meilisearch # Убрана секция deploy с резервированием GPU frontend: build: ./frontend container_name: frontend ports: - "8080:80" # Можно изменить на другой порт, если 8080 занят depends_on: - backend nginx: image: nginx:latest container_name: nginx ports: - "80:80" # Основной порт доступа к системе volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro # Файлы больше не раздаются напрямую через Nginx из LOCAL_STORAGE_PATH # Фронтенд будет получать их через бэкенд /files/{filename} depends_on: - backend - frontend volumes: meili_data: # Если SMB используется, убедитесь, что LOCAL_STORAGE_PATH в .env указывает на /mnt/smb_share # smb_share: # driver_opts: # type: cifs # o: username=${SMB_USER},password=${SMB_PASSWORD},vers=3.0,uid=1000,gid=1000 # Добавьте uid/gid если нужно # device: ${SMB_STORAGE_PATH}