Como você passa uma variável de ambiente para o Solr em execução no Docker quando a variável de ambiente só existe dentro do contêiner?

m0meni

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 runcomando, especifico a --linkopção que cria a variável de ambiente $POSTGRESQL_PORT_5432_TCP_ADDRdentro do contêiner do solr docker e preciso passar isso para o Solr para usar em meu solrconfig.xmlarquivo.

Ouvi dizer que isso é possível passando variáveis ​​de ambiente JVM para o comando de inicialização do Solr, mas docker runinicia 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.

m0meni

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.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo