在命令提示符执行Kong网关Docker命令时遇invalid reference format错误求助
解决Docker命令"invalid reference format"错误的方案
问题根源
Windows命令提示符(CMD)不支持类Unix Shell的$(pwd)语法,Docker会把这个语法解析成无效的镜像引用格式,这是报错的主要原因。另外,未正确配置的KONG_LICENSE_DATA环境变量也可能加重格式问题。
修复后的命令
将$(pwd)替换为CMD原生支持的%cd%,同时调整换行符为CMD兼容的^:
docker run -d --name kong-dbless ^ --network=kong-net ^ -v "%cd%:/kong/declarative/" ^ -e "KONG_DATABASE=off" ^ -e "KONG_DECLARATIVE_CONFIG=/kong/declarative/kong.yml" ^ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" ^ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" ^ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" ^ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" ^ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" ^ -e "KONG_ADMIN_GUI_URL=http://localhost:8002" ^ -e KONG_LICENSE_DATA ^ -p 8000:8000 ^ -p 8443:8443 ^ -p 8001:8001 ^ -p 8444:8444 ^ -p 8002:8002 ^ -p 8445:8445 ^ -p 8003:8003 ^ -p 8004:8004 ^ kong/kong-gateway:3.6.1.1
额外注意事项
- CMD中换行必须用
^,且^后面不能有任何空格或字符,否则会触发语法错误。 - 运行命令前,务必先设置
KONG_LICENSE_DATA环境变量:在CMD中执行set KONG_LICENSE_DATA=你的Kong许可证内容,或者直接将许可证内容用引号包裹写在-e后(如-e "KONG_LICENSE_DATA=xxx")。 - 确认当前工作目录下存在
kong.yml文件,否则Kong无法加载声明式配置,会启动失败。
内容的提问来源于stack exchange,提问作者deepak samuel
相关产品推荐
相关产品推荐

