首页 > 解决方案 > 在 Dockerfile 上传递 curl 的输出

问题描述

我正在使用一些 curl 命令来获取主机的 IP。curl 命令在终端本身运行良好。这是我使用的 curl 命令:

curl ${ECS_CONTAINER_METADATA_URI_V4} 2>/dev/null | jq -r '.Networks[0].IPv4Addresses[0]'

它返回我的主机的 IP 地址。

我有一个像这样的 Dockerfile:

FROM haproxy:alpine

ENV CONSUL_TEMPLATE_VERSION=0.24.1

RUN apk --update add wget

ENTRYPOINT ["consul-template","-config=/etc/consul-template/data/haproxy.hcl", "-consul-addr=xx.xx.xx.xx:8500"]

我需要将 curl 的输出传递给 Dockerfile 的 ENTRYPOINT 部分中的“xx.xx.xx.xx”。接下来我可以尝试什么?

我试过这样通过,但它不起作用:

-consul-addr=${curl ${ECS_CONTAINER_METADATA_URI_V4} 2>/dev/null | jq -r '.Networks[0].IPv4Addresses[0]'}:8500"

标签: linuxdockercurldocker-composedockerfile

解决方案


您可以放入 Dockerfile :

FROM haproxy:alpine

ENV CONSUL_TEMPLATE_VERSION=0.24.1

RUN apk --update add wget

ENTRYPOINT ["consul-template","-config=/etc/consul-template/data/haproxy.hcl"]

并运行

docker run image-id -consul-addr="${curl ${ECS_CONTAINER_METADATA_URI_V4} 2>/dev/null | jq -r '.Networks[0].IPv4Addresses[0]'}:8500"

推荐阅读