在创建卷之前复制 docker 容器内的文件(具有自定义配置的 Solr docker 图像)

Copy files inside of docker container before volumes are created (Solr docker image with custom configuration)

我需要使用已创建自定义配置的 Solr 创建 docker 容器。 为了在不安装在 docker 容器中时创建该配置,我需要执行以下操作:

cp -r /opt/solr/server/solr/configsets/basic_configs /opt/solr/server/solr/configsets/myconf

然后我必须将自定义 schema.xml 复制到该位置:

cp conf/schema.xml solr/server/solr/configsets/myconf/conf

然后删除托管架构:

rm /opt/solr/server/solr/configsets/nutch/conf/managed-schema

我有这个 docker-compose.yml,我需要对其进行修改以执行与上述命令相同的操作:

version: '3.3'
services:
  solr:
    image: "solr:7.3.1"
    ports:
     - "8983:8983"
    volumes:
      - ./solr/conf/solr-mapping.xml:/opt/solr/conf/schema.xml
    entrypoint:
      - docker-entrypoint.sh
      - solr-precreate
      - mycore

schema.xml 可以转到 valumes 部分,但我真的不明白我应该把第一个 cp 和 rm 命令放在哪里。

谢谢!

您可以将命令添加到 docker 撰写文件 ( https://docs.docker.com/compose/compose-file/#command)

version: '3.3'
services:
  solr:
  image: "solr:7.3.1"
  ports:
    - "8983:8983"
  volumes:
      - ./solr/conf/solr-mapping.xml:/opt/solr/conf/schema.xml

  command: 'bash -e -c "precreate-core mycore; cp /opt/solr/conf/schema.xml /opt/solr/server/solr/mycores/mycore/conf/schema.xml; cp /opt/solr/conf/solrconfig.xml /opt/solr/server/solr/mycores/mycore/conf/solrconfig.xml; rm /opt/solr/server/solr/mycores/mycore/conf/managed-schema; solr-foreground;"'

对我有用