• tengine lua 模块docker 镜像集成


    昨天有构建过一个tengine dubbo 模块,以下是关于lua 模块构建的的说明

    Dockerfile

    FROM alpine:3.8
    ENV TENGINE_VERSION 2.3.2
    # nginx: https://git.io/vSIyj
    RUN rm -rf /var/cache/apk/* && 
        rm -rf /tmp/*
    ENV CONFIG "
            --prefix=/etc/nginx 
            --sbin-path=/usr/sbin/nginx 
            --modules-path=/usr/lib/nginx/modules 
            --conf-path=/etc/nginx/nginx.conf 
            --error-log-path=/var/log/nginx/error.log 
            --http-log-path=/var/log/nginx/access.log 
            --pid-path=/var/run/nginx.pid 
            --lock-path=/var/run/nginx.lock 
            --http-client-body-temp-path=/var/cache/nginx/client_temp 
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp 
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp 
            --user=nginx 
            --group=nginx 
            --with-http_ssl_module 
            --with-http_realip_module 
            --with-http_addition_module 
            --with-http_sub_module 
            --with-http_dav_module 
            --with-http_flv_module 
            --with-http_mp4_module 
            --with-http_gunzip_module 
            --with-http_gzip_static_module 
            --with-http_random_index_module 
            --with-http_secure_link_module 
            --with-http_stub_status_module 
            --with-http_auth_request_module 
            --with-http_xslt_module=dynamic 
            --with-http_image_filter_module=dynamic 
            --with-http_geoip_module=dynamic 
            --with-threads 
            --with-stream 
            --with-stream_ssl_module 
            --with-stream_ssl_preread_module 
            --with-stream_realip_module 
            --with-stream_geoip_module=dynamic 
            --with-http_slice_module 
            --with-mail 
            --with-mail_ssl_module 
            --with-compat 
            --with-file-aio 
            --with-http_v2_module 
            --add-module=modules/ngx_http_lua_module 
            --add-module=modules/ngx_http_upstream_check_module 
            --add-module=modules/headers-more-nginx-module-0.33 
            --add-module=modules/ngx_http_proxy_connect_module 
            --add-module=modules/ngx_http_user_agent_module 
            --add-module=modules/ngx_multi_upstream_module 
            --add-module=modules/ngx_http_upstream_session_sticky_module 
            --add-module=modules/ngx_http_upstream_vnswrr_module 
            --add-module=modules/ngx_http_slice_module 
            --add-module=modules/ngx_http_reqstat_module 
            --add-module=modules/ngx_http_footer_filter_module 
            --add-module=modules/ngx_http_trim_filter_module 
            --add-module=modules/mod_config 
            --add-module=modules/mod_dubbo 
            "
    RUN     addgroup -S nginx 
            && adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx 
            && addgroup -g 82 -S www-data && adduser -u 82 -D -S -G www-data www-data 
            && apk update && apk add --no-cache --virtual .build-deps 
                    gcc 
                    g++ 
                    libc-dev 
                    make 
                    openssl-dev 
                    pcre-dev 
                    zlib-dev 
                    linux-headers 
                    curl 
                    libxslt-dev 
                    gd-dev 
                    geoip-dev 
            && curl -L "https://github.com/alibaba/tengine/archive/$TENGINE_VERSION.tar.gz" -o tengine.tar.gz 
            && mkdir -p /usr/src 
            && tar -zxC /usr/src -f tengine.tar.gz 
            && rm tengine.tar.gz 
            && cd /usr/src/tengine-$TENGINE_VERSION 
            && curl -L "https://github.com/openresty/headers-more-nginx-module/archive/v0.33.tar.gz" -o more.tar.gz 
            && curl -L "https://github.com/openresty/luajit2/archive/v2.1-20200102.tar.gz" -o v2.1-20200102.tar.gz 
            && tar -zxC /usr/src/tengine-$TENGINE_VERSION/modules -f more.tar.gz 
            && tar -zxC /usr/src/tengine-$TENGINE_VERSION -f v2.1-20200102.tar.gz 
        && rm  more.tar.gz v2.1-20200102.tar.gz
        && ls -l /usr/src/tengine-$TENGINE_VERSION/modules 
            && cd luajit2-2.1-20200102 && make && make install 
            && export LUAJIT_LIB=/usr/local/lib  export LUAJIT_INC=/usr/local/include/luajit-2.1 
        && cd .. && ./configure $CONFIG --with-debug 
            && make -j$(getconf _NPROCESSORS_ONLN) 
            && mv objs/nginx objs/nginx-debug 
            && mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so 
            && mv objs/ngx_http_image_filter_module.so objs/ngx_http_image_filter_module-debug.so 
            && mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so 
            && mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so 
            && ./configure $CONFIG 
            && make -j$(getconf _NPROCESSORS_ONLN) 
            && make install 
            && rm -rf /etc/nginx/html/ 
            && mkdir /etc/nginx/conf.d/ 
            && mkdir -p /usr/share/nginx/html/ 
            && install -m644 html/index.html /usr/share/nginx/html/ 
            && install -m644 html/50x.html /usr/share/nginx/html/ 
            && install -m755 objs/nginx-debug /usr/sbin/nginx-debug 
            && install -m755 objs/ngx_http_xslt_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_xslt_filter_module-debug.so 
            && install -m755 objs/ngx_http_image_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_image_filter_module-debug.so 
            && install -m755 objs/ngx_http_geoip_module-debug.so /usr/lib/nginx/modules/ngx_http_geoip_module-debug.so 
            && install -m755 objs/ngx_stream_geoip_module-debug.so /usr/lib/nginx/modules/ngx_stream_geoip_module-debug.so 
            && ln -s ../../usr/lib/nginx/modules /etc/nginx/modules 
            && strip /usr/sbin/nginx* 
            && strip /usr/lib/nginx/modules/*.so 
            && rm -rf /usr/src/tengine-$NGINX_VERSION 
            
            # Bring in gettext so we can get `envsubst`, then throw
            # the rest away. To do this, we need to install `gettext`
            # then move `envsubst` out of the way so `gettext` can
            # be deleted completely, then move `envsubst` back.
            && apk add --no-cache --virtual .gettext gettext 
            && mv /usr/bin/envsubst /tmp/ 
            
            && runDeps="$( 
                    scanelf --needed --nobanner --format '%n#p' /usr/sbin/nginx /usr/lib/nginx/modules/*.so /tmp/envsubst 
                            | tr ',' '
    ' 
                            | sort -u 
                            | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' 
            )" 
            && apk add --no-cache --virtual .nginx-rundeps $runDeps 
            && apk del .build-deps 
            && apk del .gettext 
            && mv /tmp/envsubst /usr/local/bin/ 
            
            # Bring in tzdata so users could set the timezones through the environment
            # variables
            && apk add --no-cache tzdata 
            
            # forward request and error logs to docker log collector
            && ln -sf /dev/stdout /var/log/nginx/access.log 
            && ln -sf /dev/stderr /var/log/nginx/error.log
    EXPOSE 80 443
    STOPSIGNAL SIGTERM
    CMD ["nginx", "-g", "daemon off;"]

    说明

    tengine lua 模块与openresty 的还是有点差异的,构建tengine lua 模块主要的核心是luajit,推荐使用openresty 提供的luajit
    具体操作就是下载对应版本的包,然后配置环境变量,注意ngx lua 模块应该使用tengine自带的,而不是openresty 独立repo的(理论上
    没问题,而且我也测试过没问题,主要是新特性兼容以及openresty 的一些patch 对于tengine可能会有问题)

     
     export LUAJIT_LIB=/usr/local/lib
     export LUAJIT_INC=/usr/local/include/luajit-2.1

    相关docker 镜像我已经push 到了dockerhub dalongrong/tengine:2.3.2-dubbo-lua 大家可以试用

    参考资料

    https://github.com/alibaba/tengine/tree/master/modules/ngx_http_lua_module 
    https://github.com/openresty/lua-nginx-module#installation 
    https://github.com/openresty/luajit2 
    https://github.com/rongfengliang/tengine-dockerfile

  • 相关阅读:
    Hive初识(一)
    图解HTTP总结(8)——确认访问用户身份的认证
    Android 7.0 照相 FileUriExposedException
    activity跳转的一些坑
    gopath配置
    android项目中记录
    一些趣味性总结(JAVA)
    http的response遇到illegalstateexception解决办法
    django demo
    Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决方法
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/13451631.html
Copyright © 2020-2023  润新知