【发布时间】:2021-02-16 08:47:06
【问题描述】:
我有一个非常大的文件,需要作为环境变量传递给 linux ec2 平台中的 Docker 运行命令。
我理想的 docker 命令如下所示:
docker run -p 6080:9000 -e KAFKA_BROKERCONNECT=url:port -e KAFKA_TRUSTSTORE="$(cat directory/kafka.client.truststore.jks | base64)" -e KAFKA_KEYSTORE="$(cat directory/kafka.client.keystore.jks | base64)" -e KAFKA_PROPERTIES="$(cat directory/kafka.properties | base64)" -e SERVER_SERVLET_CONTEXTPATH="/" -d obsidiandynamics/kafdrop
我得到 /bin/docker : 参数列表太长
因此,我没有执行上述操作,而是从文件中传递了所有 Env 变量 kafdrop-properties 文件看起来像:
KAFKA_BROKERCONNECT=host:port
KAFKA_TRUSTSTORE="$(cat 2kafka.client.truststore.jks)"
KAFKA_KEYSTORE="$(cat 2kafka.client.keystore.jks)"
KAFKA_PROPERTIES="$(cat /home/de601928/kafka/kafka.properties | base64)
以及对应的 Docker 运行命令:
docker run -p 6080:9000 --env-file kafdrop-properties -d obsidiandynamics/kafdrop
现在在我运行命令后,我仍然看到像 KAFKA_TRUSTSTORE 这样的环境变量没有通过 cat 内容读取,并且在我运行 docker exec env 时显示为原样
为什么 cat 命令没有从文件中读取并将值作为环境变量参数传递。
我尝试了不同的方式,比如提供 "
【问题讨论】:
-
你
export那些变量了吗?另外 -cat directory/kafka.client.truststore.jks | base64等生成的字符串是什么样的?对于 base64,它们不应包含空格,这使得错误消息难以理解...
标签: linux docker file cat docker-run