Problema de detecção do compressor ao executar o comando curl a partir do script bash no contêiner do Docker

2

Eu quero executar curl usando o script bash dentro do contêiner do Docker.

Este é o meu arquivo de script script.sh que adicionei ao contêiner:

curl -X POST http://localhost:9200/tests/test -d usr/share/elasticsearch/data/test.json

O conteúdo do arquivo json é o seguinte (a idéia de adicionar \ vem de este tópico ):

"{\"id\":\"978-1-60741-503-9\",\"doi\":\"\"}"

Quando eu entro no contêiner Docker em execução e faço bash myscript.sh , o resultado é:

{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"failed to parse"}],"type":"mapper_parsing_exception","reason":"failed to parse","caused_by":{"type":"not_x_content_exception","reason":"Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes"}}

No entanto, se eu alterar o script para este:

curl -X POST http://localhost:9200/tests/test -d "{\"id\":\"978-1-60741-503-9\",\"doi\":\"\"}"

então funciona sem erros.

Então, por que ele não gosta do arquivo json?

ATUALIZAÇÃO:

Quando adiciono @ atrás de usr/ , como sugerido nos comentários, recebo o seguinte erro:

Warning: Couldn't read data from file Warning: "usr/share/elasticsearch/data/test.json", this makes an empty Warning: POST. % Total % Received % Xferd Average Speed Time
Time Time Current Dload Upload Total Spent Left Speed 100 201 100 201 0 0 740 0 --:--:-- --:--:-- --:--:-- 738 {"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"failed to parse, document is empty"}],"type":"mapper_parsing_exception","reason":"failed to parse, document is empty"},"status":400}

O arquivo test.json :

"{\"id\":\"123\",\"field\":\"456\"}"
    
por Klue 15.07.2016 / 11:28

1 resposta

1

O arquivo json passado como argumento para curl -d deve ser precedido pelo símbolo @ .

curl -X POST http://localhost:9200/tests/test -d @usr/share/elasticsearch/data/test.json
    
por 15.07.2016 / 16:25