我正在尝试构建一个精益的高山码头工人容器,用于在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