我需要将数据从运行在docker中的PostgreSQL容器导入到也运行在docker中的Solr服务器。
在我的docker run
命令中,我指定了--link
选项,该选项在solr docker容器内创建环境变量$POSTGRESQL_PORT_5432_TCP_ADDR
,我需要将其传递给solr,以便在我的solrconfig.xml
文件中使用。
我听说,通过将JVM环境变量传递给Solr启动命令,这是可能的,但docker run
会自动启动Solr。我找到的唯一解决方法是:
docker run --name solr -d -p 8983:8983 --link postgresql --volumes-from solr_cores makuk66/docker-solr /bin/true
使用bin/true启动容器,使其不执行任何操作,然后
docker exec -it solr /bin/bash
为了进入容器,最后自己用标记运行solr启动命令
-Dsolr.database.ip=$POSTGRESQL_PORT_5432_TCP_ADDR
然而,这是一个复杂的手动过程,我想知道是否有更好的方法。
2条答案
按热度按时间wz3gfoph1#
查看您看到的页面Taking Solr to Production
bin/solr脚本只是在启动期间将以-D开头的选项传递给JVM。对于在生产环境中运行,我们建议在include文件中定义的SOLR_OPTS变量中设置这些属性。继续我们的软提交示例,在/var/solr/solr.in中。sh,您可以这样做:SOLR_OPTS=“$SOLR_OP S-Dsolr.autoSoftCommit.maxTime=10000”
因此,您只需在
solr.bin.sh
中编辑SOLR_OPTS环境变量。对于Docker来说有点不同,因为您不能直接访问
solr.bin.sh
,但经过一些尝试和错误后,只需将其添加到我的Dockerfile中即可。然后可以在solrconfig中使用它。xml文件为
需要注意的一件重要事情是,只要确保不覆盖任何重要的内容,就可以随意调用JVM环境变量。我本来可以叫它的
如果我想的话。
6mw9ycah2#
由于某些原因,
solr.in.cmd
文件看起来与e1d1e完全相同,这让我对如何在其中设置变量感到困惑。在windows容器中,从dockerfile执行相同操作的命令是: