这是我的设置。我使用docker创建了一个基本的solr容器(来自官方solr docker hub的5.5.5版)。在这个容器中,我创建了大约30000个文档。我现在要做的是创建一个新的docker solr图像,默认情况下包含这些文档。
我以为我可以将索引从现有容器中复制出来,然后通过dockerfile将其复制到我的新映像中。我通过复制它来尝试这个。
docker cp my_solr_container:/opt/solr/server/solr/core_name/data .
然后在我的新solr映像的Dockerfile中将此数据文件夹复制到相应的文件夹中 COPY --chown = solr:solr data / opt / solr / server / solr / core_name / data /
但是当我构建图像并尝试运行它时,我收到以下错误:
3035 ERROR (coreLoadExecutor-6-thread-1) [ x:Development] o.a.s.c.CoreContainer Error creating core [Development]: Error opening new searcher
org.apache.solr.common.SolrException: Error opening new searcher
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:820)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:658)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:820)
at org.apache.solr.core.CoreContainer.access$000(CoreContainer.java:90)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:473)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:464)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.solr.common.SolrException: Error opening new searcher
at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1696)
at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1807)
at org.apache.solr.core.SolrCore.initSearcher(SolrCore.java:914)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:793)
... 10 more
Caused by: org.apache.lucene.index.CorruptIndexException: codec footer mismatch (file truncated?): actual footer=0 vs expected footer=-1071082520 (resource=MMapIndexInput(path="/opt/solr/server/solr/dev/data/index/_33.fdt"))
at org.apache.lucene.codecs.CodecUtil.validateFooter(CodecUtil.java:418)
at org.apache.lucene.codecs.CodecUtil.retrieveChecksum(CodecUtil.java:403)
at org.apache.lucene.codecs.compressing.CompressingStoredFieldsReader.<init>(CompressingStoredFieldsReader.java:180)
at org.apache.lucene.codecs.compressing.CompressingStoredFieldsFormat.fieldsReader(CompressingStoredFieldsFormat.java:121)
at org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat.fieldsReader(Lucene50StoredFieldsFormat.java:173)
at org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:117)
at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:65)
at org.apache.lucene.index.ReadersAndUpdates.getReader(ReadersAndUpdates.java:145)
at org.apache.lucene.index.ReadersAndUpdates.getReadOnlyClone(ReadersAndUpdates.java:197)
at org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:99)
at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:435)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:100)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:79)
at org.apache.solr.core.StandardIndexReaderFactory.newReader(StandardIndexReaderFactory.java:40)
at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1660)
... 13 more
3046 ERROR (coreContainerWorkExecutor-2-thread-1) [ ] o.a.s.c.CoreContainer Error waiting for SolrCore to be created
java.util.concurrent.ExecutionException: org.apache.solr.common.SolrException: Unable to create core [Development]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.solr.core.CoreContainer$2.run(CoreContainer.java:502)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.solr.common.SolrException: Unable to create core [Development]
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:833)
at org.apache.solr.core.CoreContainer.access$000(CoreContainer.java:90)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:473)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:464)
... 5 more
Caused by: org.apache.solr.common.SolrException: Error opening new searcher
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:820)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:658)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:820)
... 8 more
Caused by: org.apache.solr.common.SolrException: Error opening new searcher
at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1696)
at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1807)
at org.apache.solr.core.SolrCore.initSearcher(SolrCore.java:914)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:793)
... 10 more
Caused by: org.apache.lucene.index.CorruptIndexException: codec footer mismatch (file truncated?): actual footer=0 vs expected footer=-1071082520 (resource=MMapIndexInput(path="/opt/solr/server/solr/dev/data/index/_33.fdt"))
at org.apache.lucene.codecs.CodecUtil.validateFooter(CodecUtil.java:418)
at org.apache.lucene.codecs.CodecUtil.retrieveChecksum(CodecUtil.java:403)
at org.apache.lucene.codecs.compressing.CompressingStoredFieldsReader.<init>(CompressingStoredFieldsReader.java:180)
at org.apache.lucene.codecs.compressing.CompressingStoredFieldsFormat.fieldsReader(CompressingStoredFieldsFormat.java:121)
at org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat.fieldsReader(Lucene50StoredFieldsFormat.java:173)
at org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:117)
at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:65)
at org.apache.lucene.index.ReadersAndUpdates.getReader(ReadersAndUpdates.java:145)
at org.apache.lucene.index.ReadersAndUpdates.getReadOnlyClone(ReadersAndUpdates.java:197)
at org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:99)
at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:435)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:100)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:79)
at org.apache.solr.core.StandardIndexReaderFactory.newReader(StandardIndexReaderFactory.java:40)
at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1660)
... 13 more
我还试图通过点击网址
以另一种方式复制索引http://host:8080/solr/replication?command=backup&location=/home/backup
在我现有的容器上,然后从容器中复制备份索引并以相同的方式复制到我的新docker镜像,但遇到了同样的错误。
从现有容器中复制数据的可行方法是什么,以便我可以使用已设置的数据构建新图像。
这是我的Dockerfile供参考:
FROM solr:5.5.5
ARG core_name="Development"
ARG core_path="/opt/solr/server/solr/dev"
COPY --chown=solr:solr schema.xml $core_path/conf/
COPY --chown=solr:solr solrconfig.xml $core_path/conf/
COPY --chown=solr:solr stopwords.txt $core_path/conf/
COPY --chown=solr:solr data $core_path/data/
USER solr
RUN echo "name=$core_name" > $core_path/core.properties
答案 0 :(得分:0)
您可以使用[docker commit][1]
将您创建文档的容器实例提交为新图像。