gpt4 book ai didi

docker - 在脚本中运行时 curl 失败

转载 作者:行者123 更新时间:2023-12-03 22:40:26 35 4
gpt4 key购买 nike

尝试通过运行一个简单的 curl 与正在运行的 docker 容器进行通信:

curl -v -s -X POST http://localhost:4873/_session -d \'name=some\&password=thing\'
在任何 shell(登录/交互式)中都可以正常工作,但在脚本中执行时却惨遭失败:
temp=$(curl -v -s -X POST http://localhost:4873/_session -d \'name=some\&password=thing\')
echo $temp
错误输出提示连接重置:
*   Trying 127.0.0.1:4873...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 4873 (#0)
> POST /_session HTTP/1.1
> Host: localhost:4873
> User-Agent: curl/7.68.0
> Accept: */*
> Content-Length: 29
> Content-Type: application/x-www-form-urlencoded
>
} [29 bytes data]
* upload completely sent off: 29 out of 29 bytes
* Recv failure: Connection reset by peer <-- this! why?
* Closing connection 0
我迷路了,任何提示都值得赞赏。
PS:在没有子shell的情况下尝试过,也会发生同样的情况,所以这与脚本或其执行方式有关。
编辑 1
添加了 docker compose 文件。我不明白为什么常规 shell 可以工作,但脚本不行。请注意,脚本不在 docker 中运行,它也在主机上运行。
version: "2.1"
services:
verdaccio:
image: verdaccio/verdaccio:4
container_name: verdaccio-docker-local-storage-vol
ports:
- "4873:4873"
volumes:
- "./storage:/verdaccio/storage"
- "./conf:/verdaccio/conf"
volumes:
verdaccio:
driver: local
编辑 2
这样做 temp=$(curl -v -s http://www.google.com)在脚本中工作正常。这是某种网络问题,但我仍然无法弄清楚原因。
编辑 3
很多人建议重新格式化有效载荷数据,但即使没有有效载荷也会引发相同的错误。另请注意,我使用的是 Linux,因此不确定是否有任何权限可以在这里发挥作用。

最佳答案

如果您使用的是 bash 脚本,您能否使用以下更改更新脚本并尝试再次运行。

address="http://127.0.0.1:4873/_session"
cred="{\"name\":\"some\", \"password\":\"thing\"}"
temp="curl -v -s -X POST $address -d $cred"
echo $temp
我怀疑问题出在脚本内,而不是在 docker 上。

关于docker - 在脚本中运行时 curl 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63740286/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com