Для решения этой проблемы я подготовил собственное изображение solr и добавил специальный файл append.solr.sh, который добавляется к /opt/solr/bin/solr.in.sh
. Ядра используют свойства java, которые я определил в append.solr.sh в части dataSource.
Я подготовил файл append.solr.sh:
# Our specific configs.
EXTRA_OPTIONS="-Djava.system.database=$DB_TARGET -Djava.system.dbport=$DB_PORT -Djava.system.dbuser=$DB_USERNAME -Djava.system.dbpass=$DB_PASSWORD"
SOLR_OPTS="$SOLR_OPTS $EXTRA_OPTIONS"
FROM solr
EXPOSE 8983
USER root
COPY append.solr.sh /append.solr.sh
RUN cat /append.solr.sh >> /opt/solr/bin/solr.in.sh \
&& rm /append.solr.sh
COPY --chown=solr:solr cores /opt/solr/server/solr/mycores
USER solr
WORKDIR /opt/solr
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["solr-foreground"]
Модифицировал источник данных для моих ядер следующим образом:
<dataSource
type="JdbcDataSource"
driver="com.sap.db.jdbc.Driver"
url="jdbc:sap://${java.system.database}:${java.system.dbport}"
user="${java.system.dbuser}"
password="${java.system.dbpass}" />
И изменил мой docker-compose.yml, чтобы он выглядел так:
version: '3.7'
services:
search:
image: mysolr:latest
container_name: mysolr
build:
context: ./search
dockerfile: Dockerfile
environment:
- DB_TARGET
- DB_PORT
- DB_USERNAME
- DB_PASSWORD
Наконец, я генерирую.env
файл, содержащий эти переменные.
РЕДАКТИРОВАТЬ - альтернативное решение, соответствующее вашей настройке:
docker-compose.yml
version: "3.6"
services:
postgres:
image: postgres:11-alpine
ports:
- "5435:5432"
environment:
- POSTGRES_DB=${ENV_DB}
- POSTGRES_USER=${ENV_PASS}
- POSTGRES_PASSWORD=${ENV_USER}
volumes:
- ./etc/db-init/ddl.sql:/docker-entrypoint-initdb.d/1-ddl.sql
- ./etc/db-init/dml.sql:/docker-entrypoint-initdb.d/2-dml.sql
- pg_data:/var/lib/postgresql/data
solr:
build: ./etc/.
ports:
- "8983:8983"
environment:
- db_url=${ENV_JDBC}
- db_user=${ENV_USER}
- db_password=${ENV_PASS}
volumes:
- solr_data:/var/solr/data
depends_on:
- postgres
volumes:
pg_data:
solr_data:
.env
ENV_USER=os
ENV_PASS=heslo
ENV_DB=os
ENV_JDBC=jdbc:postgresql://localhost:5432/os
Dockerfile
FROM solr:8.2
USER root
COPY pgdriver/postgresql-42.2.8.jar /opt/solr/dist/
COPY solr/ /opt/solr/server/solr/
CMD "/opt/solr/bin/solr start -Ddb_url=$db_url -Ddb_user=$db_user -Ddb_password=$db_password -s /opt/solr/server/solr -f -force"