Eu preciso fazer uma importação de dados de um contêiner PostgreSQL rodando dentro do docker para um servidor Solr também rodando dentro do Docker.
No meu docker run
comando, especifico a --link
opção que cria a variável de ambiente $POSTGRESQL_PORT_5432_TCP_ADDR
dentro do contêiner do solr docker e preciso passar isso para o Solr para usar em meu solrconfig.xml
arquivo.
Ouvi dizer que isso é possível passando variáveis de ambiente JVM para o comando de inicialização do Solr, mas docker run
inicia o Solr automaticamente. A única solução que encontrei foi fazer algo como:
docker run --name solr -d -p 8983:8983 --link postgresql --volumes-from solr_cores makuk66/docker-solr /bin/true
Iniciando o contêiner com bin / true para que não faça nada, e então
docker exec -it solr /bin/bash
para entrar no contêiner, finalmente executando o comando solr startup sozinho com o sinalizador
-Dsolr.database.ip=$POSTGRESQL_PORT_5432_TCP_ADDR
No entanto, este é um processo manual complicado, e estou me perguntando se há uma maneira melhor.
Olhando a página Levando Solr para Produção, você vê
O script bin / solr simplesmente passa opções começando com -D para a JVM durante a inicialização. Para execução em produção, recomendamos definir essas propriedades na variável SOLR_OPTS definida no arquivo de inclusão. Seguindo nosso exemplo de soft-commit, em /var/solr/solr.in.sh, você faria: SOLR_OPTS = "$ SOLR_OPTS -Dsolr.autoSoftCommit.maxTime = 10000"
Portanto, tudo o que você precisa fazer é editar a variável de ambiente SOLR_OPTS em solr.bin.sh
.
É um pouco diferente para o Docker porque você não tem acesso direto ao solr.bin.sh
, mas depois de algumas tentativas e erros, foi tão fácil quanto adicionar ao meu Dockerfile.
RUN echo 'SOLR_OPTS="$SOLR_OPTS -Dsolr.database.ip=$POSTGRESQL_PORT_5432_TCP_ADDR"' >> /opt/solr/bin/solr.in.sh
Então você pode usá-lo no arquivo solrconfig.xml como
${solr.database.ip}
Uma coisa importante a observar é que você pode chamar a variável de ambiente JVM do que quiser, desde que certifique-se de não sobrescrever nada importante. Eu poderia ter chamado isso
-Dsolr.potato
se eu quisesse.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras