因为solr要安装自定义的分词器
就打算在原有基础上提前放好,直接启动就有core
第一步获取默认配置
方法一
docker安装solr 这个帖子中
1、安装镜像
docker pull solr:8.11.1
2、新建目录
mkdir -p /home/apps/solr
3、复制配置文件运行一个临时solr docker run --name solr -d -p 8983:8983 solr:8.11.1 复制配置文件 docker cp solr:/opt/solr/ /home/apps/solr/conf 停止并删除solr docker stop solr && docker rm solr
4、创建并启动
docker run \ -d \ --name solr \ --restart=always \ --privileged=true \ -p 6016:8983 \ -v /home/apps/solr/conf:/opt/solr \ solr:8.11.1
这么一套流程下来以后,宿主机上就有一个磁盘和容器内部互通
然后在这个solr界面上手动创建core或者在容器内用命令行solr create -c appLog
创建
在/var/solr/data
目录下就会生成对应的core
文件
然后再通过【Docker-Solr】Permission denied 帖子中管理员方式进入当前的容器内部
docker exec -it --user root solr /bin/bash
把里面的/var/solr/data
目录下core
文件copy出来
方法二
管理员进入容器内/opt/solr-8.11.0/server/solr/configsets
路径内有俩种默认的配置文件
用想办法搞出来
在外部组装core的文件目录
conf文件内容如下,有需要替换managed-schema
也可以在这里替换
data
目录有个snapshot_metadata
的目录,里面是空的(ps:data好像全部是空也没事,待测)
DockerFile打包镜像
原来add或者copy进去都有错误
不是Error waiting for SolrCore to be loaded on startup
就是is not available due to init failure
或者java.nio.file.AccessDeniedException: /var/solr/data/ResourceCore/data
大概率是因为启动以后加载初始化没有权限
在一篇帖子Docker持久卷没有权限(Apache Solr) 设置Dockerfile 具有命名卷中给了提示,我进行自己尝试,在copy文件中添加权限--chown=solr
附上完整的dockerFile
FROM solr:8.11.0-slim
# 安装中文分词
WORKDIR /opt/solr/server/solr-webapp/webapp/WEB-INF/lib
ADD pinyinAnalyzer4.3.1.jar .
ADD pinyin4j-2.5.0.jar .
ADD ik-analyzer-8.5.0.jar .
WORKDIR /var/solr/data/
copy --chown=solr ResourceCore ./ResourceCore
这样构建完并启动,是可以直接找到对应的core
查阅稿子
docker安装solr
Solr - 知乎
Docker持久卷没有权限
Docker-Solr】Permission denied