← Volver al Generador Principal

Configuración de Docker Compose para Meilisearch + Python FastAPI

Cuándo usar esta combinación

Esta arquitectura es ideal para aplicaciones que requieren capacidades de búsqueda de texto completo ultrarrápidas (sub-50ms), tolerantes a errores tipográficos y con soporte multi-idioma (ej. catálogos de e-commerce, motores de búsqueda de SaaS o gestión documental). FastAPI actúa como una capa de backend asíncrona de alto rendimiento que procesa lógica de negocio e ingesta datos, mientras Meilisearch descarga la carga de indexación y consultas complejas de la base de datos relacional principal con un consumo mínimo de recursos.


docker-compose.yml

version: '3.8'

services:
  meilisearch:
    image: getmeili/meilisearch:v1.6
    container_name: meilisearch_app
    restart: unless-stopped
    environment:
      - MEILI_ENV=production
      - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
      - MEILI_NO_ANALYTICS=true
    volumes:
      - meili_data:/meili_data
    networks:
      - backend-network
    # No exponer puertos públicamente en producción si FastAPI actúa como proxy

  fastapi:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: fastapi_app
    restart: unless-stopped
    depends_on:
      - meilisearch
    environment:
      - APP_ENV=production
      - SECRET_KEY=${FASTAPI_SECRET_KEY}
      - MEILISEARCH_URL=http://meilisearch:7700
      - MEILISEARCH_KEY=${MEILI_MASTER_KEY}
    ports:
      - "8000:8000"
    networks:
      - backend-network

volumes:
  meili_data:
    driver: local

networks:
  backend-network:
    driver: bridge

3 Variables de entorno críticas para producción

  1. MEILI_MASTER_KEY: Clave maestra para autenticación en Meilisearch. Si no se define o usa el valor por defecto, Meilisearch se negará a iniciar en modo producción o quedará completamente vulnerable a accesos no autorizados.
  2. FASTAPI_SECRET_KEY: Semilla criptográfica utilizada por FastAPI/Starlette para la firma de tokens JWT, cookies de sesión y hashes de seguridad.
  3. MEILI_ENV: Debe configurarse explícitamente en production. Esto desactiva rutas inseguras de depuración, la interfaz web pública de testing (UI dashboard) y fuerza el uso obligatorio de autenticación por API keys.

Consejo Senior de Seguridad y Rendimiento

Checklist de Seguridad antes de desplegar