У меня есть очень большой файл, который нужно передать как переменную среды в команду запуска Docker на платформе linux ec2.
Моя идеальная команда докера выглядит так:
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 не читает файл и не передает значение в качестве аргумента переменной среды.
Я пробовал разные способы, такие как предоставление ‹file и т. д. Здесь ценю любую помощь.
export
эти переменные? Кроме того, как выглядят строки, которые генерируютсяcat directory/kafka.client.truststore.jks | base64
и тому подобным? с base64 они не должны включать пробелы, что затрудняет понимание сообщения об ошибке ... - person tink   schedule 03.11.2020