如何将 lua-cjson 添加到我的 nginx lua 容器?

问题描述

我正在使用这个 docker-compose 创建一个支持 Lua 的 Nginx

version: '3.9'
services:
  Nginx:
    container_name: local_Nginx
    image: fabiocicerchia/Nginx-lua

    environment: 
      - REdis_SERVER=172.26.0.1
    ports: 
      - 8089:80
      - 8053:8053
    volumes: 
      - /home/navid/lua_project/Nginx/Nginx.conf:/etc/Nginx/Nginx.conf
      - /home/navid/lua_project/Nginx/www:/usr/share/Nginx/html
      - /home/navid/lua_project/lib/resty/redis.lua:/usr/local/share/luajit-2.0.4/resty/redis.lua
      - /home/navid/lua_project/lib/resty/kafka:/usr/local/share/lua/5.1/resty/kafka
     
    extra_hosts:
      - host.docker.internal:host-gateway    

现在我需要将 cjson添加到我的容器中。我在我的主机上尝试了 build 方法,但它抛出了这个异常:

lua.h: 没有那个文件或目录

而且我还添加了这些行以使其在我的容器上:

- /home/navid/lua_project/lib/resty/lua-cjson:/usr/local/share/lua/5.1/resty/cjson
    
        command: 
          - |
            cd /usr/local/share/lua/5.1/resty/cjson
            autoreconf -i -v --force
            ./configure
            make
            make install

但它在运行阶段失败并出现此错误

exec: line 38: cd /usr/local/share/lua/5.1/resty/cjson autoreconf -i -v --force ./configure make make install : 未找到

是否可以直接在我的容器上安装 cjson?

更新:

我终于构建并上传了 cjson.so 到我的 docker 容器中,但是我收到了这个错误

文件“/usr/local/lib/lua/5.1/cjson.so”加载模块“cjson”: 重定位 /usr/local/lib/lua/5.1/cjson.so 时出错:__snprintf_chk:找不到符号

那么有没有其他具有良好性能的替代库?

解决方法

您似乎正在尝试将 openresty 模块与标准 nginx 安装一起使用,但这不起作用,因为它们不是一回事。 Openresty 是 nginx + LuaJIT。