How do I add the Lua module for nginx on Alpine linux?

23,397

Solution 1

Here is a 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"]

Installing the nginx-mod-http-lua package will also install nginx and luajit, among others.

The nginx.conf should contain at least this:

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;

Solution 2

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 

First line of 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;

Solution 3

See: "Adding third-party modules to nginx official image" At: https://github.com/nginxinc/docker-nginx/tree/master/modules

"It's possible to extend a mainline image with third-party modules either from your own instuctions following a simple filesystem layout/syntax using build_module.sh helper script, or failing back to package sources from pkg-oss."

$ docker build --build-arg ENABLED_MODULES="ndk lua" -t my-nginx-with-lua .

Solution 4

We use Openresty, a platform that integrates nginx and Lua.

In the default nginx file, you could call Lua like so:

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")

    }
}

The alpine image here: https://github.com/openresty/docker-openresty/tree/master/

There is also an alpine-fat that had make, git and other libraries that can help you build within your Docker image.

Share:
23,397
Marian
Author by

Marian

User experience designer and passionate cyclist

Updated on July 05, 2022

Comments

  • Marian
    Marian almost 2 years

    I'd like to have a lean Docker image for nginx with the Lua module enabled. How can I create this based on Alpine linux?