Docker 如何在Alpine linux上为nginx添加Lua模块?

Docker 如何在Alpine linux上为nginx添加Lua模块?,docker,nginx,lua,alpine,Docker,Nginx,Lua,Alpine,我希望为nginx提供一个启用Lua模块的精益Docker映像。如何基于Alpine linux创建此功能?您可以查看Docker Hub 您会发现一个Nginx映像,它基于alpelinux,支持Lua 一些例子 或 查看Dockerfile了解更多详细信息这里有一个Dockerfile: FROM alpine:3.6 RUN apk add --no-cache nginx-mod-http-lua # Delete default config RUN rm -r /etc/n

我希望为nginx提供一个启用Lua模块的精益Docker映像。如何基于Alpine linux创建此功能?

您可以查看Docker Hub

您会发现一个Nginx映像,它基于alpelinux,支持Lua

一些例子


查看Dockerfile了解更多详细信息

这里有一个
Dockerfile

FROM alpine:3.6

RUN apk add --no-cache nginx-mod-http-lua

# Delete default config
RUN rm -r /etc/nginx/conf.d && rm /etc/nginx/nginx.conf

# Create folder for PID file
RUN mkdir -p /run/nginx

# Add our nginx conf
COPY ./nginx.conf /etc/nginx/nginx.conf

CMD ["nginx"]
安装
nginx mod http lua
软件包还将安装
nginx
luajit

nginx.conf
应至少包含以下内容:

load_module /usr/lib/nginx/modules/ndk_http_module.so;
load_module /usr/lib/nginx/modules/ngx_http_lua_module.so;

pcre_jit on;

events {
  worker_connections 1024;
}

daemon off;

我们使用Openresty,这是一个集成nginx和Lua的平台

在默认的nginx文件中,您可以这样调用Lua:

server {
    listen 80;
    listen 443 ssl; # 'ssl' parameter tells NGINX to decrypt the traffic

    # 1
    location ~ /api/(.*) {
        resolver xxx.x.x.xx;

    rewrite_by_lua_block {
        ngx.req.set_header("x-header", "12345678901234567")

    }
}
这里的阿尔卑斯山图片:

还有一个阿尔卑斯fat,它有
make
git
和其他库,可以帮助您在Docker映像中进行构建。

Dockerfile:

FROM nginx:1.15-alpine
RUN  mkdir -p /run/nginx
RUN  apk add --no-cache nginx-mod-http-lua
COPY nginx_conf/ /etc/nginx/ # Your nginx conf
COPY lua/ /etc/lua/          # Your lua files 
nginx conf的第一行:

load_module /usr/lib/nginx/modules/ndk_http_module.so;
load_module /usr/lib/nginx/modules/ngx_http_lua_module.so;
pcre_jit on;

我找到了这两个,但发现这两个都不是最新的(上一次推出是在一年前)。此外,他们缺少关于如何启用模块的信息。如果您不删除
include/etc/nginx/modules/*.conf,则不需要这些
load\u module
默认值。@Marian:在这种情况下我们如何安装Luarock?我确实在/etc/nginx/conf.dWhy中找到了luajit.load_module“指令的include path,在nginx:[emerg]module”/usr/lib/nginx/modules/ndk_http_module.so中解释得很好的--no cache标志?@jurl“在/etc/nginx/nginx.conf:1中,版本1016001而不是1018000…”。。。去年没有发生这种情况。尝试使用nginx:1.15-alpine,我已检查并正在工作。如果你做的研究,使其与最新版本的工作,请让我知道结果。不管怎样,我编辑了原始答案。感谢您的反馈。Nginx版本与模块版本不匹配,似乎
apk add
无法指定版本号。