我在Windows powershell中定义一个变量,如下所示
1.$LFILE=cat license.json
2.echo $LFILE
{
"source": "ABCD LTD",
"clientId": "EAL",
"details": "Lenses",
"key": "acfghkjhadasldas"
}
3.docker run --rm -d -p 3030:3030 -e LICENSE=$LFILE landoop/kafka-lenses-dev:latest运行此命令后,当我查看docker容器中的许可证文件时,它删除了双引号。
当我从docker容器内部检查时,这是我所看到的。如果你在下面看到,引号被去掉了。
root@fast-data-dev / $ cat /var/run/lenses/license.conf
{
source: ABCD LTD,
clientId: EAL,
details: Lenses,
key: acfghkjhadasldas
}
io.lenses.core.license.LicenseException: Can not read the license
file:/var/run/lenses/license.conf我尝试将$LFILE放在单引号和双引号中。我尝试将文件名直接放入docker命令中,如下所示。还是不走运。
docker run --rm -d -p 3030:3030 -e LICENSE="'$(cat license.json)'" landoop/kafka-lenses-dev:latest发布于 2019-04-12 02:46:38
单独使用"cat“命令将返回一个Object[]。我猜docker在找一个字符串。要获取字符串,请使用以下方法之一。
$LFILE = Get-Content license.json -Raw或
$LFILE = cat license.json -Raw因为你运行的是Kafka,所以我查了一下许可配置。下面是他们说的话:
为了运行,Lenses需要一个许可证文件,可以从我们那里获得。收到许可证后,将其存储在一个文件(即license.file)中,并更新配置以指向它。确保配置值包含完整的文件路径。
# License file allowing connecting to up to N brokers
lenses.license.file="license.json"根据您当前的docker命令,您正在尝试为许可证设置环境变量。您似乎需要在容器中放置一个文件,然后设置lenses.license.file="full/license/file/path/license.json“
看起来你需要像下面这样运行一些东西,但它只查找密钥,而不是整个文件。
docker run -p 3030:3030 -e EULA="CHECK_YOUR_EMAIL_FOR_KEY" \ --name=lenses-dev landoop/kafka-lenses-dev发布于 2019-04-23 21:38:07
我不熟悉Docker许可证的格式化需求,但如果您需要其中的双引号,为什么不在已有的内容中使用快捷键,并按照您需要的方式显式创建变量呢?
$LFILE = '{
"source": "ABCD LTD",
"clientId": "EAL",
"details": "Lenses",
"key": "acfghkjhadasldas"
}'-OR应该是-
$LFILE = '"source": "ABCD LTD",
"clientId": "EAL",
"details": "Lenses",
"key": "acfghkjhadasldas"'## TEST AND ENSURE THE VARIABLE IS FORMATTED CORRECTLY ##
$LFILE
## NOW ADD IT TO YOUR COMMAND AND EXECUTE ##
docker run --rm -d -p 3030:3030 -e LICENSE=$LFILE landoop/kafka-lenses-dev:latesthttps://stackoverflow.com/questions/55633558
复制相似问题