Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 95 additions & 89 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,84 +4,90 @@ FROM nginx:${nginx_version} AS build
SHELL ["/bin/bash", "-c"]

RUN set -x \
&& apt-get update \
&& apt-get install -y --no-install-suggests \
libluajit-5.1-dev libpam0g-dev zlib1g-dev libpcre3-dev libpcre2-dev \
libexpat1-dev git curl build-essential lsb-release libxml2 libxslt1.1 libxslt1-dev autoconf libtool libssl-dev \
unzip libmaxminddb-dev libbrotli-dev cmake pkg-config libjansson-dev libmsgpack-dev
&& apt-get update \
&& apt-get install -y --no-install-suggests \
libluajit-5.1-dev libpam0g-dev zlib1g-dev libpcre3-dev libpcre2-dev \
libexpat1-dev git curl build-essential lsb-release libxml2 libxslt1.1 libxslt1-dev autoconf libtool libssl-dev \
unzip libmaxminddb-dev libbrotli-dev cmake pkg-config libjansson-dev

RUN git clone --depth 1 --branch cpp-3.1.0 https://github.com/msgpack/msgpack-c.git /home/msgpack
RUN cd /home/msgpack \
&& cmake . \
&& make \
&& make install

RUN git clone --depth 1 --branch v3.2.1 https://github.com/benmcollins/libjwt.git /home/libjwt
RUN mkdir -p /home/libjwt/build && \
cd /home/libjwt/build && \
cmake .. && make && make install
cd /home/libjwt/build && \
cmake .. && make && make install

ARG openresty_package_version=1.27.1.1-1~bookworm1
RUN set -x \
&& curl -fsSL https://openresty.org/package/pubkey.gpg | apt-key add - \
&& echo "deb https://openresty.org/package/$(uname -m | grep -qE 'aarch64|arm64' && echo -n 'arm64/')debian $(lsb_release -sc) openresty" | tee -a /etc/apt/sources.list.d/openresty.list \
&& apt-get update \
&& apt-get install -y --no-install-suggests openresty=${openresty_package_version} \
&& cd /usr/local/openresty \
&& cp -vr ./luajit/* /usr/local/ \
&& rm -d /usr/local/share/lua/5.1 \
&& ln -sf /usr/local/lib/lua/5.1 /usr/local/share/lua/ \
&& cp -vr ./lualib/* /usr/local/lib/lua/5.1
&& curl -fsSL https://openresty.org/package/pubkey.gpg | apt-key add - \
&& echo "deb https://openresty.org/package/$(uname -m | grep -qE 'aarch64|arm64' && echo -n 'arm64/')debian $(lsb_release -sc) openresty" | tee -a /etc/apt/sources.list.d/openresty.list \
&& apt-get update \
&& apt-get install -y --no-install-suggests openresty=${openresty_package_version} \
&& cd /usr/local/openresty \
&& cp -vr ./luajit/* /usr/local/ \
&& rm -d /usr/local/share/lua/5.1 \
&& ln -sf /usr/local/lib/lua/5.1 /usr/local/share/lua/ \
&& cp -vr ./lualib/* /usr/local/lib/lua/5.1

ENV LUAJIT_LIB=/usr/local/lib \
LUAJIT_INC=/usr/local/include/luajit-2.1
LUAJIT_INC=/usr/local/include/luajit-2.1

ARG modules
RUN set -x \
&& nginx_version=$(echo ${NGINX_VERSION} | sed 's/-.*//g') \
&& curl -fSL "https://nginx.org/download/nginx-${nginx_version}.tar.gz" \
| tar -C /usr/local/src -xzvf- \
&& ln -s /usr/local/src/nginx-${nginx_version} /usr/local/src/nginx \
&& cd /usr/local/src/nginx \
&& configure_args=$(nginx -V 2>&1 | grep "configure arguments:" | awk -F 'configure arguments:' '{print $2}'); \
IFS=','; \
for module in ${modules}; do \
module_repo=$(echo $module | sed -E 's@^(((https?|git)://)?[^:]+).*@\1@g'); \
module_tag=$(echo $module | sed -E 's@^(((https?|git)://)?[^:]+):?([^:/]*)@\4@g'); \
dirname=$(echo "${module_repo}" | sed -E 's@^.*/|\..*$@@g'); \
git clone --recursive "${module_repo}"; \
cd ${dirname}; \
git fetch --tags; \
if [ -n "${module_tag}" ]; then \
if [[ "${module_tag}" =~ ^(pr-[0-9]+.*)$ ]]; then \
pr_numbers="${BASH_REMATCH[1]//pr-/}"; \
IFS=';'; \
for pr_number in ${pr_numbers}; do \
git fetch origin "pull/${pr_number}/head:pr-${pr_number}"; \
git merge --no-commit pr-${pr_number} master; \
done; \
IFS=','; \
else \
git checkout "${module_tag}"; \
fi; \
fi; \
cd ..; \
configure_args="${configure_args} --add-dynamic-module=./${dirname}"; \
done; unset IFS \
&& eval ./configure ${configure_args} \
&& make modules \
&& cp -v objs/*.so /usr/lib/nginx/modules/
&& nginx_version=$(echo ${NGINX_VERSION} | sed 's/-.*//g') \
&& curl -fSL "https://nginx.org/download/nginx-${nginx_version}.tar.gz" \
| tar -C /usr/local/src -xzvf- \
&& ln -s /usr/local/src/nginx-${nginx_version} /usr/local/src/nginx \
&& cd /usr/local/src/nginx \
&& configure_args=$(nginx -V 2>&1 | grep "configure arguments:" | awk -F 'configure arguments:' '{print $2}'); \
IFS=','; \
for module in ${modules}; do \
module_repo=$(echo $module | sed -E 's@^(((https?|git)://)?[^:]+).*@\1@g'); \
module_tag=$(echo $module | sed -E 's@^(((https?|git)://)?[^:]+):?([^:/]*)@\4@g'); \
dirname=$(echo "${module_repo}" | sed -E 's@^.*/|\..*$@@g'); \
git clone --recursive "${module_repo}"; \
cd ${dirname}; \
git fetch --tags; \
if [ -n "${module_tag}" ]; then \
if [[ "${module_tag}" =~ ^(pr-[0-9]+.*)$ ]]; then \
pr_numbers="${BASH_REMATCH[1]//pr-/}"; \
IFS=';'; \
for pr_number in ${pr_numbers}; do \
git fetch origin "pull/${pr_number}/head:pr-${pr_number}"; \
git merge --no-commit pr-${pr_number} master; \
done; \
IFS=','; \
else \
git checkout "${module_tag}"; \
fi; \
fi; \
cd ..; \
configure_args="${configure_args} --add-dynamic-module=./${dirname}"; \
done; unset IFS \
&& eval ./configure ${configure_args} \
&& make modules \
&& cp -v objs/*.so /usr/lib/nginx/modules/

ARG luarocks_version=3.12.2
RUN set -x \
&& curl -fSL "https://luarocks.org/releases/luarocks-${luarocks_version}.tar.gz" \
| tar -C /usr/local/src -xzvf- \
&& ln -s /usr/local/src/luarocks-${luarocks_version} /usr/local/src/luarocks \
&& cd /usr/local/src/luarocks \
&& ./configure && make && make install
&& curl -fSL "https://luarocks.org/releases/luarocks-${luarocks_version}.tar.gz" \
| tar -C /usr/local/src -xzvf- \
&& ln -s /usr/local/src/luarocks-${luarocks_version} /usr/local/src/luarocks \
&& cd /usr/local/src/luarocks \
&& ./configure && make && make install

ARG lua_modules
RUN set -x \
&& ln -s /usr/include/$(uname -m)-linux-gnu /usr/include/linux-gnu \
&& IFS=","; \
for lua_module in ${lua_modules}; do \
unset IFS; \
luarocks install ${lua_module}; \
done
&& ln -s /usr/include/$(uname -m)-linux-gnu /usr/include/linux-gnu \
&& IFS=","; \
for lua_module in ${lua_modules}; do \
unset IFS; \
luarocks install ${lua_module}; \
done

FROM nginx:${nginx_version}

Expand All @@ -95,36 +101,36 @@ COPY --from=build /usr/local/lib/libjwt.so /usr/local/lib/libjwt.so


ENV LUAJIT_LIB=/usr/local/lib \
LUAJIT_INC=/usr/local/include/luajit-2.1
LUAJIT_INC=/usr/local/include/luajit-2.1

RUN set -x \
&& apt-get update \
&& apt-get install -y --no-install-suggests \
ca-certificates \
curl \
dnsutils \
iputils-ping \
libcurl4-openssl-dev \
libyajl-dev \
libxml2 \
lua5.1-dev \
net-tools \
procps \
tcpdump \
rsync \
unzip \
vim-tiny \
libmaxminddb0 \
libbrotli1 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& ldconfig -v \
&& ls /etc/nginx/modules/*.so | grep -v debug \
| xargs -I{} sh -c 'echo "load_module {};" | tee -a /etc/nginx/modules/all.conf' \
&& sed -i -E 's|listen\s+80|&80|g' /etc/nginx/conf.d/default.conf \
&& touch /var/run/nginx.pid \
&& mkdir -p /var/cache/nginx \
&& chown -R nginx:nginx /etc/nginx /var/log/nginx /var/cache/nginx /var/run/nginx.pid
&& apt-get update \
&& apt-get install -y --no-install-suggests \
ca-certificates \
curl \
dnsutils \
iputils-ping \
libcurl4-openssl-dev \
libyajl-dev \
libxml2 \
lua5.1-dev \
net-tools \
procps \
tcpdump \
rsync \
unzip \
vim-tiny \
libmaxminddb0 \
libbrotli1 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& ldconfig -v \
&& ls /etc/nginx/modules/*.so | grep -v debug \
| xargs -I{} sh -c 'echo "load_module {};" | tee -a /etc/nginx/modules/all.conf' \
&& sed -i -E 's|listen\s+80|&80|g' /etc/nginx/conf.d/default.conf \
&& touch /var/run/nginx.pid \
&& mkdir -p /var/cache/nginx \
&& chown -R nginx:nginx /etc/nginx /var/log/nginx /var/cache/nginx /var/run/nginx.pid

EXPOSE 8080 8443

Expand Down
2 changes: 1 addition & 1 deletion flavors.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"https://github.com/openresty/echo-nginx-module.git",
"https://github.com/openresty/headers-more-nginx-module.git",
"https://github.com/tsuru/ngx-location-name-module.git:main",
"https://github.com/tsuru/ngx-http-limit-req-rw-module.git:v0.2.6",
"https://github.com/tsuru/ngx-http-limit-req-rw-module.git:v0.3.2",
"https://github.com/FRiCKLE/ngx_cache_purge.git:pr-45",
"https://github.com/wandenberg/nginx-push-stream-module.git",
"https://github.com/vozlt/nginx-module-vts.git:v0.2.4",
Expand Down