有没有更有效的方法来对Luarocks进行码头化



我正在尝试构建一个精益的高山码头工人容器,用于在Google Cloud Build中对Lua进行单元测试。

它运行良好,但构建大约需要 30 - 50 秒。当我运行破坏和luacheck时,每个只需要几秒钟。关于如何优化此构建过程的任何想法?

我正在使用wget,然后切换到git。我添加了 curl 和解压缩,因为 luarocks 需要它并为 luacheck 的一个依赖项打开 openssl。我可以/应该使用不同的依赖项吗?

FROM alpine
ENV LUA_VERSION 5.1
RUN apk update
RUN apk add lua${LUA_VERSION} 
RUN apk add lua${LUA_VERSION}-dev
RUN apk add bash build-base curl git openssl unzip
RUN cd /tmp && 
    git clone https://github.com/keplerproject/luarocks.git && 
    cd luarocks && 
    sh ./configure && 
    make build install && 
    cd && 
    rm -rf /tmp/luarocks
RUN luarocks install busted
RUN luarocks install luacheck
RUN luarocks install luacov
你可以

试试这个

Dockerfile

FROM alpine:3.12
# Set environment
ENV LUA_VERSION=5.1.5 
    LUAROCKS_VERSION=3.4.0
# Install dependency packages
RUN set -xe && 
        apk add --no-cache --virtual .build-deps 
            curl 
            gcc 
            g++ 
            libc-dev 
            make 
            readline-dev 
        && 
        apk add --no-cache 
            readline 
        && 
        # Install Lua
        wget http://www.lua.org/ftp/lua-${LUA_VERSION}.tar.gz && 
        tar zxf lua-${LUA_VERSION}.tar.gz && rm -f lua-${LUA_VERSION}.tar.gz && 
        cd lua-${LUA_VERSION} && 
        make -j $(getconf _NPROCESSORS_ONLN) linux && make install && 
        cd / && rm -rf lua-${LUA_VERSION} && 
        # Install LuaRocks
        wget https://luarocks.org/releases/luarocks-${LUAROCKS_VERSION}.tar.gz && 
        tar zxf luarocks-${LUAROCKS_VERSION}.tar.gz && rm -f luarocks-${LUAROCKS_VERSION}.tar.gz && 
        cd luarocks-${LUAROCKS_VERSION} && 
        ./configure && 
        make -j $(getconf _NPROCESSORS_ONLN) build && make install && 
        cd / && rm -rf luarocks-${LUAROCKS_VERSION} && 
        # Remove all build deps
        apk del .build-deps && 
        # Test
        lua -v && luarocks
COPY docker-entrypoint.sh /usr/local/bin

docker-entrypoint.sh

#!/bin/sh
set -e
buildDepsApk="
curl
libc-dev
gcc
wget
"
pm='unknown'
if [ -e /lib/apk/db/installed ]; then
    pm='apk'
fi
if [ "$pm" = 'apk' ]; then
    apk add --no-cache ${buildDepsApk}
fi
luarocks install $@
if [ "$pm" = 'apk' ]; then
    apk del ${buildDepsApk}
fi

你不必建造luarocks。您可以使用以下方法安装软件包:

RUN apk add luarocks

最新更新