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

Posted

技术标签:

【中文标题】如何将 lua-cjson 添加到我的 nginx lua 容器中?【英文标题】:how to add lua-cjson to my nginx lua container? 【发布时间】:2021-07-31 15:51:14 【问题描述】:

我正在使用这个 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:第 38 行:cd /usr/local/share/lua/5.1/resty/cjson autoreconf -i -v --force ./configure make make install : not found

是否有任何直接在我的容器上安装 cjson 的方法?

更新:

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

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

那么还有没有其他性能不错的替代库?

【问题讨论】:

【参考方案1】:

这可能是您的问题的解决方案。

这是一个允许 cjson 工作的 dockerfile:

FROM fabiocicerchia/nginx-lua:1-alpine-compat

RUN apk add gcc musl-dev coreutils \
    && luarocks install lua-cjson

更多详情:https://github.com/fabiocicerchia/nginx-lua/issues/34

【讨论】:

【参考方案2】:

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

【讨论】:

那么我该如何通过我的配置来做到这一点? @Navid_pdp11 我想从一个 openresty 容器而不是 nginx 开始?

以上是关于如何将 lua-cjson 添加到我的 nginx lua 容器中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 python 命令行工具添加到我的 PATH?

如何将 UIButtons 添加到我的 TableViewCell? [复制]

如何将 UIViews 添加到我的 contentView (AwakeFromNib)

如何将推送通知服务添加到我的应用程序?

如何将 .NET 框架添加到我的项目中?

如何将 css 添加到我的其他本地网页? [关闭]