From f6c8c76e58b8ff2b74297da6e74a92d50b8e7bc7 Mon Sep 17 00:00:00 2001 From: TeKrop Date: Wed, 12 Jun 2024 08:40:57 +0200 Subject: [PATCH] feat: now building ngx_http_redis_module.so on nginx image build --- Dockerfile | 11 +++++-- build/nginx/Dockerfile | 41 ++++++++++++++++++++++++--- build/nginx/ngx_http_redis_module.so | Bin 91616 -> 0 bytes docker-compose.yml | 2 +- 4 files changed, 46 insertions(+), 8 deletions(-) delete mode 100644 build/nginx/ngx_http_redis_module.so diff --git a/Dockerfile b/Dockerfile index 463fbc0f..37b2f651 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,25 @@ -FROM python:3.12-alpine AS main +# Build arguments +ARG PYTHON_VERSION=3.12 +ARG POETRY_VERSION=1.8.2 + +FROM python:${PYTHON_VERSION}-alpine AS main WORKDIR /code # Environment variables +ARG POETRY_VERSION ENV PYTHONFAULTHANDLER=1 \ PYTHONUNBUFFERED=1 \ PYTHONHASHSEED=random \ PIP_NO_CACHE_DIR=off \ PIP_DISABLE_PIP_VERSION_CHECK=on \ PIP_DEFAULT_TIMEOUT=100 \ - POETRY_VERSION=1.8.2 + POETRY_VERSION=${POETRY_VERSION} # Install required system packages and install poetry RUN apk add build-base && \ apk add libffi-dev && \ - pip install poetry==1.8.2 + pip install poetry==$POETRY_VERSION # Copy only requirements (caching in Docker layer) COPY pyproject.toml /code/ diff --git a/build/nginx/Dockerfile b/build/nginx/Dockerfile index fc29ace4..45ccd3c8 100644 --- a/build/nginx/Dockerfile +++ b/build/nginx/Dockerfile @@ -1,6 +1,39 @@ -FROM nginx:1.20.2-alpine +# Build arguments +ARG NGINX_VERSION=1.20.2 +ARG NGX_HTTP_REDIS_VERSION=0.3.8 -# Copy specific configuration files and libraries +FROM nginx:${NGINX_VERSION}-alpine + +# Environment variables +ARG NGINX_VERSION +ENV NGINX_VERSION=${NGINX_VERSION} +ARG NGX_HTTP_REDIS_VERSION +ENV NGX_HTTP_REDIS_VERSION=${NGX_HTTP_REDIS_VERSION} + +# Copy specific configuration files COPY nginx.conf /etc/nginx/nginx.conf -COPY ngx_http_redis_module.so /usr/lib/nginx/modules/ngx_http_redis_module.so -COPY overfast-api.conf /etc/nginx/conf.d/default.conf \ No newline at end of file +COPY overfast-api.conf /etc/nginx/conf.d/default.conf + +# Download nginx and ngx_http_redis sources +RUN wget https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz && \ + tar -xzvf nginx-$NGINX_VERSION.tar.gz && \ + wget http://people.freebsd.org/~osa/ngx_http_redis-$NGX_HTTP_REDIS_VERSION.tar.gz && \ + tar -xzvf ngx_http_redis-$NGX_HTTP_REDIS_VERSION.tar.gz + +# Download build dependencies +RUN apk add build-base linux-headers pcre-dev openssl-dev zlib-dev + +# Configure nginx with ngx_http_redis module. We must use the same configuration +# settings than the ones used in nginx compilation. We then only build the +# modules, and copy the resulting ngx_http_redis_module.so into nginx modules directory +RUN cd nginx-$NGINX_VERSION && \ + nginx_configure_args=$(nginx -V 2>&1 | grep 'configure arguments:' | sed -e "s/configure arguments://") && \ + echo "./configure $nginx_configure_args --add-dynamic-module=../ngx_http_redis-$NGX_HTTP_REDIS_VERSION" > configure.sh && \ + chmod +x configure.sh && \ + ./configure.sh && \ + make modules && \ + cp objs/ngx_http_redis_module.so /usr/lib/nginx/modules/ngx_http_redis_module.so + +# Clean everything +RUN rm -rf nginx-$NGINX_VERSION* && \ + rm -rf ngx_http_redis-$NGX_HTTP_REDIS_VERSION* \ No newline at end of file diff --git a/build/nginx/ngx_http_redis_module.so b/build/nginx/ngx_http_redis_module.so deleted file mode 100644 index 1f6b2884be71e07ce8ea5a59062dcb6737539a96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91616 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 diff --git a/docker-compose.yml b/docker-compose.yml index 43fe3c33..a841a33e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,6 +59,6 @@ services: redis: condition: service_healthy healthcheck: - test: ["CMD-SHELL", "wget -O /dev/null http://localhost || exit 1"] + test: ["CMD-SHELL", "wget --spider --quiet http://localhost || exit 1"] interval: 5s timeout: 2s \ No newline at end of file