devopsfaith/krakend:2.7.2
MSYS_NO_PATHCONV=1 docker run -it -v "$PWD:/app" -w /app krakend/builder:2.7.2 go build -buildmode=plugin -o jwt-validator.so
MSYS_NO_PATHCONV=1
-buildmode=plugin
非docker方法(Linux-generic)的构建插件提出了另一个错误:
$ MSYS_NO_PATHCONV=1 docker run -it -v "$PWD:/app" -w /app krakend/builder:2.7.2-linux-generic go build -buildmode=plugin -o jwt-validator.so .
...
plugin #0 (/etc/krakend/out/kt-jwt-validator.so): plugin.Open("/etc/krakend/out/kt-jwt-validator.so"): Error loading shared library libresolv.so.2: No such file or directory (needed by /etc/krakend/out/kt-jwt-validator.so)
当我尝试将插件集成到修改后的krakend存储库中时,它会引发调试消息,描述插件无法集成,因为它是
built with a different version of package internal/godebugs
,因此被禁用:
$ mv ../jwt-validator-plugin/jwt-validator.so .
$ docker-compose up
[+] Running 1/0
✔ Container krakend Created 0.0s
Attaching to krakend
krakend | Parsing configuration file: /etc/krakend/krakend.json
krakend | [KRAKEND] 2025/01/13 - 07:28:38.995 ▶ DEBUG [SERVICE: telemetry/logging] Improved logging started.
krakend | [KRAKEND] 2025/01/13 - 07:28:38.995 ▶ INFO Starting KrakenD v2.7.2
krakend | [KRAKEND] 2025/01/13 - 07:28:38.995 ▶ INFO Working directory is /etc/krakend
krakend | [KRAKEND] 2025/01/13 - 07:28:38.995 ▶ DEBUG [SERVICE: Plugin Loader] Starting loading process
krakend | [KRAKEND] 2025/01/13 - 07:28:39.343 ▶ DEBUG [SERVICE: Executor Plugin] plugin #0 (/etc/krakend/out/kt-jwt-validator.so): plugin.Open("/etc/krakend/out/kt-jwt-validator"): plugin was built with a different version of package internal/godebugs
krakend | [KRAKEND] 2025/01/13 - 07:28:39.345 ▶ DEBUG [SERVICE: Handler Plugin] plugin #0 (/etc/krakend/out/kt-jwt-validator.so): plugin.Open("/etc/krakend/out/kt-jwt-validator.so"): plugin was built with a different version of package internal/godebugs (previous failure)
krakend | [KRAKEND] 2025/01/13 - 07:28:39.349 ▶ DEBUG [SERVICE: Modifier Plugin] plugin #0 (/etc/krakend/out/kt-jwt-validator.so): plugin.Open("/etc/krakend/out/kt-jwt-validator.so"): plugin was built with a different version of package internal/godebugs (previous failure)
krakend | [KRAKEND] 2025/01/13 - 07:28:39.350 ▶ DEBUG [SERVICE: Plugin Loader] Loading process completed
Krakend Builder和Krakend有不同的GO版本吗?因为我的插件的源代码中没有
godebugs
依赖性。我认为这是在Go的运行时,似乎有2个不同的运行时间 - 一个在建筑商的形象中,另一个在Krakend中。如果是这样,我怎么能
在上面评论的@Alo时,Krakend是使用自己的建筑商构建的,因此不应该发生。更多信息在这里:github.com/krakend/krakend-ce/blob/master/makefile#l80-l81
检查并确保您的Dockerfile是由相同的特定krakend版本(maj.min.fix)构建的?