Skip to content

Commit fa3457b

Browse files
authored
Merge pull request #530 from DhavalGojiya/feat/solr9-support-add-and-dep-solr8
feat: Add Solr 9 support to pysolr and deprecate Solr 8 and earlier versions
2 parents 07edd60 + 0682dc8 commit fa3457b

File tree

13 files changed

+1691
-334
lines changed

13 files changed

+1691
-334
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
UV_PYTHON: ${{ matrix.python }}
1616
UV_LOCKED: 1
1717
UV_NO_DEV: 1
18+
PYTHONUNBUFFERED: 1
1819
steps:
1920
- uses: actions/checkout@v6
2021
with:

docker/docker-compose-solr.yml

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
services:
2+
# -------------------------------------------------------------
3+
# ZOOKEEPER
4+
# -------------------------------------------------------------
5+
zookeeper:
6+
image: zookeeper:3.9
7+
container_name: zookeeper
8+
ports:
9+
- "2181:2181"
10+
environment:
11+
ZOO_4LW_COMMANDS_WHITELIST: "mntr,conf,ruok"
12+
networks:
13+
- search
14+
15+
# -------------------------------------------------------------
16+
# SOLR STANDALONE
17+
# -------------------------------------------------------------
18+
solr-standalone:
19+
image: solr:${SOLR_VERSION:-9}
20+
container_name: solr-standalone
21+
ports:
22+
- "8983:8983"
23+
volumes:
24+
- ./solr_configs/9.x.x:/pysolr_configset:ro
25+
environment:
26+
- PYSOLR_CONFIGSET=/pysolr_configset
27+
- SITECORE_CONFIGSET=/var/solr/data/sitecore_configset
28+
- SOLR_CORE_NAME=core0
29+
- SOLR_MODULES=extraction
30+
- TECHPRODUCTS_CONFIGSET=/opt/solr/server/solr/configsets/sample_techproducts_configs
31+
command: |
32+
bash -c "
33+
set -e
34+
35+
# Copy tech products configset as base for sitecore_configset
36+
cp -r $$TECHPRODUCTS_CONFIGSET $$SITECORE_CONFIGSET
37+
38+
# Override with pysolr-specific configset configuration
39+
cp -r $$PYSOLR_CONFIGSET/. $$SITECORE_CONFIGSET/conf
40+
41+
# Rename managed-schema.xml to schema.xml
42+
mv "$$SITECORE_CONFIGSET/conf/managed-schema.xml" "$$SITECORE_CONFIGSET/conf/schema.xml"
43+
44+
# Create main core with sitecore configset
45+
# Syntax: precreate-core <core> <configset>
46+
precreate-core $$SOLR_CORE_NAME $$SITECORE_CONFIGSET
47+
48+
# Prepare demo cores instanceDirs for test cases
49+
cp -r $$SITECORE_CONFIGSET $$SOLR_HOME/demo_core1
50+
cp -r $$SITECORE_CONFIGSET $$SOLR_HOME/demo_core2
51+
52+
# Start Solr in foreground (PID 1)
53+
exec solr-foreground
54+
"
55+
healthcheck:
56+
test:
57+
- CMD-SHELL
58+
- >-
59+
curl -sf http://localhost:8983/solr/$$SOLR_CORE_NAME/admin/ping?wt=json ||
60+
exit 1
61+
interval: 5s
62+
timeout: 5s
63+
retries: 5
64+
start_period: 10s
65+
networks:
66+
- search
67+
68+
# -------------------------------------------------------------
69+
# SOLRCLOUD NODE 0
70+
# -------------------------------------------------------------
71+
solr-node0:
72+
image: solr:${SOLR_VERSION:-9}
73+
container_name: solr-node0
74+
ports:
75+
- "8993:8983"
76+
environment:
77+
- SOLR_HOST=solr-node0
78+
- SOLR_MODULES=extraction
79+
- ZK_HOST=zookeeper:2181
80+
healthcheck:
81+
test:
82+
- CMD-SHELL
83+
- 'curl -sf http://localhost:8983/solr/admin/info/system?wt=json || exit 1'
84+
interval: 5s
85+
timeout: 5s
86+
retries: 5
87+
start_period: 10s
88+
depends_on:
89+
- zookeeper
90+
networks:
91+
- search
92+
93+
# -------------------------------------------------------------
94+
# SOLRCLOUD NODE 1
95+
# -------------------------------------------------------------
96+
solr-node1:
97+
image: solr:${SOLR_VERSION:-9}
98+
container_name: solr-node1
99+
ports:
100+
- "8994:8983"
101+
environment:
102+
- SOLR_HOST=solr-node1
103+
- SOLR_MODULES=extraction
104+
- ZK_HOST=zookeeper:2181
105+
healthcheck:
106+
test:
107+
- CMD-SHELL
108+
- 'curl -sf http://localhost:8983/solr/admin/info/system?wt=json || exit 1'
109+
interval: 5s
110+
timeout: 5s
111+
retries: 5
112+
start_period: 10s
113+
depends_on:
114+
- zookeeper
115+
networks:
116+
- search
117+
118+
# -------------------------------------------------------------
119+
# SOLR INIT CONTAINER (Upload configset to Zookeeper + Create collection)
120+
# -------------------------------------------------------------
121+
solr-init:
122+
image: solr:${SOLR_VERSION:-9}
123+
container_name: solr-init
124+
depends_on:
125+
solr-node0:
126+
condition: service_healthy
127+
solr-node1:
128+
condition: service_healthy
129+
solr-standalone:
130+
condition: service_healthy
131+
volumes:
132+
- ./solr_configs/9.x.x:/pysolr_configset:ro
133+
- ./scripts/solr-init.sh:/solr-init.sh:ro
134+
environment:
135+
- PYSOLR_CONFIGSET=/pysolr_configset
136+
- SITECORE_CONFIGSET=/var/solr/data/sitecore_configset
137+
- SOLR_COLLECTION_NAME=core0
138+
- TECHPRODUCTS_CONFIGSET=/opt/solr/server/solr/configsets/sample_techproducts_configs
139+
- ZK_HOST=zookeeper:2181
140+
command:
141+
- bash
142+
- -c
143+
- /solr-init.sh
144+
networks:
145+
- search
146+
147+
networks:
148+
search:
149+
driver: bridge
150+
name: search

docker/scripts/solr-init.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
set -e
3+
4+
echo "Solr init starting ..."
5+
6+
echo "Preparing sitecore_configset..."
7+
cp -r "$TECHPRODUCTS_CONFIGSET" "$SITECORE_CONFIGSET"
8+
cp -r "$PYSOLR_CONFIGSET"/. "$SITECORE_CONFIGSET/conf"
9+
10+
# Rename managed-schema.xml to schema.xml before uploading the configset to ZooKeeper
11+
mv "$SITECORE_CONFIGSET/conf/managed-schema.xml" "$SITECORE_CONFIGSET/conf/schema.xml"
12+
13+
echo "Uploading sitecore_configset to Zookeeper..."
14+
solr zk upconfig -n sitecore_configset -d "$SITECORE_CONFIGSET"
15+
echo "Configset uploaded successfully."
16+
17+
echo "Creating collection '$SOLR_COLLECTION_NAME'..."
18+
curl -fsS \
19+
"http://solr-node0:8983/solr/admin/collections?action=CREATE&name=$SOLR_COLLECTION_NAME&numShards=1&replicationFactor=2&collection.configName=sitecore_configset&createNodeSet=solr-node0:8983_solr,solr-node1:8983_solr"
20+
21+
echo "Collection '$SOLR_COLLECTION_NAME' created successfully."
22+
echo "Solr init completed."

0 commit comments

Comments
 (0)