Sign inSign up

geerlingguy/solr

By geerlingguy

•Updated almost 2 years ago

Apache Solr image built from the Ansible Role geerlingguy.solr

Image
3

100K+

geerlingguy/solr repository overview

⁠Apache Solr Container (Built with Ansible)

CI Docker pulls

This project is composed of three main parts:

  • Ansible project: This project is maintained on GitHub: geerlingguy/solr-container⁠. Please file issues, support requests, etc. against this GitHub repository.
  • Docker Hub Image: If you just want to use the geerlingguy/solr Docker image⁠ in your project, you can pull it from Docker Hub.
  • Ansible Role: If you need a flexible Ansible role that's compatible with both traditional servers and containerized builds, check out geerlingguy.solr⁠ on Ansible Galaxy. (This is the Ansible role that does the bulk of the work in managing the Apache Solr container.)

⁠Versions

Currently maintained versions include:

  • 9.x, [latest version tag], latest: Apache Solr 9.x
  • 8.x, 8.11.2: Apache Solr 8.x
  • 7.x, 7.7.3: Apache Solr 7.x
  • 6.x, 6.6.6: Apache Solr 6.x (legacy - no new updates)
  • 5.x, 5.5.5: Apache Solr 5.x (legacy - no new updates)
  • 4.x, 4.10.4: Apache Solr 4.x (legacy - no new updates)

⁠Standalone Usage

If you want to use the geerlingguy/solr image from Docker Hub, you don't need to install or use this project at all. You can quickly build a Solr container locally with:

docker run -d --name=solr -p 8983:8983 geerlingguy/solr:latest /opt/solr/bin/solr start -p 8983 -f -force

(For Solr 4.x and 5.x, drop the final -force argument.)

You can also wrap up that configuration in a Dockerfile and/or a docker-compose.yml file if you want to keep things simple. For example:

```
version: "3"

services:
  solr:
    image: geerlingguy/solr:latest
    container_name: solr
    ports:
      - "8983:8983"
    restart: always
    # See 'Custom and Persistent Solr cores' for instructions for volumes.
    volumes: []
    command: ["/opt/solr/bin/solr", "start", "-p", "8983", "-f", "-force"]

Then run:

docker-compose up -d

Now you should be able to access the Solr admin dashboard at http://localhost:8983/.

⁠Custom and Persistent Solr cores

The default installation includes a collection1 core in the SOLR_HOME directory, /var/solr.

Apache Solr will autodiscover any Solr cores in SOLR_HOME by searching for core.properties files inside each subdirectory. A standard convention for a single Solr core is to to mount a host directory as a volume with the core directory, containing the core's conf, data, and core.properties files.

Here's an example minimal core.properties file, for a core named mysearch:

name=mysearch
config=solrconfig.xml
schema=schema.xml
dataDir=data

So, if you have a solr core directory named mysearch (with a mysearch/core.properties file inside, and a conf and data directory for storing Solr configuration and index data, respectively), which looks like this:

mysearch_conf/
├── conf
│   ├── elevate.xml
│   ├── mapping-ISOLatin1Accent.txt
│   ├── protwords.txt
│   ├── _rest_managed.json
│   ├── schema_extra_fields.xml
│   ├── schema_extra_types.xml
│   ├── schema.xml
│   ├── solrconfig_extra.xml
│   ├── solrconfig.xml
│   ├── solrcore.properties
│   ├── stopwords.txt
│   └── synonyms.txt
├── core.properties
└── data

Mount it as a volume like -v ./mysearch:/var/solr/mysearch:rw. If you have multiple solr cores (all defined inside a cores directory), mount them inside a cores directory like -v ./cores:/var/solr/cores.

Or, if using a Docker Compose file:

services:
  solr:
    ...
    volumes:
      # If you have one core:
      - ./mysearch:/var/solr/mysearch:rw
      # If you have multiple cores:
      - ./cores:/var/solr/cores:rw

You can also mount volumes from a data container or elsewhere; the key is you will be able to both provide custom Solr configuration (schema.xml, solrconfig.xml, etc.), and also have a persistent data directory that lives outside the container.

⁠Apache Solr 3.x

There are a number of differences to keep in mind if using Apache Solr 3.x:

  • Apache Solr 3.x doesn't support core.properties or core autodiscovery, so if you want to use a custom Solr core configuration, you should mount a volume into /opt/solr/example/solr with your Solr core configuration (conf and data dirs, at minimum).
  • At this time, multicore isn't officially supported under 3.x in this Docker container.
  • Apache Solr 3.x doesn't run in the foreground in the same way as 4+. You have to use the command java -jar start.jar inside the directory /opt/solr/example to start Solr in the foreground.

⁠License

MIT / BSD

⁠Author Information

This container build was created in 2017 by Jeff Geerling⁠, author of Ansible for DevOps⁠.

Tag summary

Content type

Image

Digest

sha256:61563f88f…

Size

591.5 MB

Last updated

almost 2 years ago

docker pull geerlingguy/solr