Как установить 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"]