Pour un projet en cours sur Drupal 8, j'ai besoin d'un moteur de recherche avec plusieurs indexes. J'utilise évidement le module search_api avec un moteur de recherche SolR, Vu que je suis en mode "développement" je vais utiliser une image docker qui me fournira une installation fonctionnelle de SolR, directement plugable avec Drupal.
Par habitude j'utilise les images de : https://github.com/TehesFR/docker-solr
Une fois docker installé l'image se lance avec la commande suivante :
docker run -p 8080:8983 tehes/docker-solr:4.10
Cela lancera une image SolR 4.10 sur le port 8080, si on souhaite utiliser une autre version du moteur il suffit d'adapter le tag :
docker run -p 8080:8983 tehes/docker-solr:6.6
Et si besoin de plusieurs indexes ?
Par contre dans mon cas, j'avais besoin de plusieurs cores pour mes différents indexes, j'ai donc adapté son image pour en créer une nouvelle : https://github.com/kgaut/docker-solr-multicore
C'est du « quick'n'Dirty » Je me suis basé uniquement sur la version 6.6 de SolR, la seule modification par rapport au DockerFile original est l'ajout d'une variable NB_CORES qui est par défaut à 4. L'image créé donc 4 core permettant d'avoir 4 indexes.
J'ai mis mon image sur Docker hub : https://hub.docker.com/r/kgaut/docker-solr-multicore/
Pour lancer l'image :
docker run -p 8080:8983 kgaut/docker-solr-multicore
4 cores et pourquoi pas 8 ?
Si jamais vous avez besoin de changer le nombre de cores, vous pouvez modifier cette image de la façon suivante :
git clone git@github.com:kgaut/docker-solr-multicore.git my-docker-solr-multicore
cd my-docker-solr-multicore
Modifiez le fichier DockerFile et à la ligne 11 remplacez "env NB_CONTAINER 4" par "env NB_CONTAINER 8"
Construisez votre image (cette étape peut prendre un peu de temps) :
docker build -t my-docker-solr-multicore .
une fois terminée, lancez l'image :
docker run -p 8080:8983 my-docker-solr-multicore
et bim ! 8 cores :
Améliorations
Je suis loin d'être un expert docker, et si vous connaissez un moyen de passer le nombre de core voulu lors du lancement de l'image, je suis preneur. Même si vu que les cores sont créés au moment du build de l'image, je ne suis pas bien sur que cela soit possible...
Si vous avez d'autres idées d'améliorations, n'hésitez-pas, merci !