Как установить Lapis в докер-контейнер?

Я только начинаю работать с фреймворком Lua под названием Lapis, но столкнулся с проблемой, когда попытался установить его в докер-контейнеровоз.

Я использую официальный образ OpenResty (Джесси) и хочу расширить мой Dockerfile командой "luarocks install lapis".

Когда я пытаюсь построить изображение, я получаю эту ошибку:

ERROR: Service 'nginx' failed to build: The command '/bin/sh -c luarocks install lapis' returned a non-zero code: 1

А потом этот:

lapis 1.6.0-1 depends on lua-cjson (not installed)
Installing https://luarocks.org/lua-cjson-2.1.0-1.src.rock
lua_cjson.c:1298:13: error: static declaration of 'luaL_setfuncs' follows non-static declaration
static void luaL_setfuncs (lua_State *l, const luaL_Reg *reg, int nup)
            ^

In file included from lua_cjson.c:44:0:
/usr/local/openresty/luajit/include/luajit-2.1/lauxlib.h:88:18: note: previous declaration of 'luaL_setfuncs' was here
LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
                 ^
Error: Failed installing dependency: https://luarocks.org/lua-cjson-2.1.0-1.src.rock - Build error: Failed compiling object lua_cjson.o
gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c lua_cjson.c -o lua_cjson.o

Что вызывает ошибку?

1 ответ

Попробуйте это изображение докера с предустановленным Lapis. Он основан на Alpine Linux и использует последние версии OpenResty и Lapis. А вот Dockerfile, если вы хотите воспроизвести его:

ARG RESTY_IMAGE_BASE="openresty/openresty"
ARG RESTY_IMAGE_TAG="1.13.6.2-alpine"

FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG}

LABEL maintainer="Dmitry Golovin <dima@golovin.in>"

ARG RESTY_LUAROCKS_VERSION="3.0.2"

RUN apk add --no-cache --virtual .build-deps \
        perl-dev \
        openssl-dev \
        bash \
        build-base \
        curl \
        linux-headers \
        make \
        outils-md5 \
        perl \
        unzip \
    && cd /tmp \
    && curl -fSL https://github.com/luarocks/luarocks/archive/${RESTY_LUAROCKS_VERSION}.tar.gz -o luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \
    && tar xzf luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \
    && cd luarocks-${RESTY_LUAROCKS_VERSION} \
    && ./configure \
        --prefix=/usr/local/openresty/luajit \
        --with-lua=/usr/local/openresty/luajit \
        --lua-suffix=jit-2.1.0-beta3 \
        --with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1 \
    && make build \
    && make install \
    && cd /tmp \
    && rm -rf luarocks-${RESTY_LUAROCKS_VERSION} luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \
    && apk add --no-cache --virtual .gettext gettext \
    && mv /usr/bin/envsubst /tmp/ \
    && runDeps="$( \
        scanelf --needed --nobanner /tmp/envsubst \
            | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
            | sort -u \
            | xargs -r apk info --installed \
            | sort -u \
    )" \
    && apk add --no-cache --virtual $runDeps \
    && mv /tmp/envsubst /usr/local/bin/ \
    && luarocks install lapis \
    && apk del .build-deps .gettext \
    && mkdir /var/www

WORKDIR /var/www
CMD ["lapis", "server"]
Другие вопросы по тегам