Files

97 lines
2.6 KiB
Docker
Raw Permalink Normal View History

2026-03-23 01:21:17 +03:00
# Dockerfile for building nginx with hello module on AlmaLinux 9
# Build stage
FROM almalinux:9 AS builder
# Install build dependencies
RUN dnf -y update && \
dnf -y install \
gcc \
make \
wget \
tar \
openssl-devel \
pcre-devel \
zlib-devel \
git \
&& dnf clean all
# Set working directory
WORKDIR /app
# Copy the entire project into the image
COPY . .
# Build nginx from source with hello module
RUN cd nginx-* && \
./configure \
--with-compat \
--add-dynamic-module=../modules/mod_rewrite \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/etc/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_slice_module \
--with-http_dav_module \
--with-http_auth_request_module \
--with-http_secure_link_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_ssl_preread_module \
--with-pcre-jit && \
make modules && \
make install
# Runtime stage
FROM almalinux:9
# Install runtime dependencies
RUN dnf -y update && \
dnf -y install \
openssl \
pcre \
zlib \
&& dnf clean all
# Copy nginx binary and modules from builder
COPY --from=builder /usr/sbin/nginx /usr/sbin/nginx
COPY --from=builder /etc/nginx /etc/nginx
COPY --from=builder /etc/nginx/modules /etc/nginx/modules
RUN mkdir -p /etc/nginx/modules
RUN mkdir -p /var/lib/nginx/body /var/lib/nginx/proxy /var/lib/nginx/fastcgi /var/lib/nginx/uwsgi /var/lib/nginx/scgi
RUN mkdir -p /tmp/test_nginx_root
RUN echo "helo" > /tmp/test_nginx_root/index.html
COPY --from=builder /var/log/nginx /var/log/nginx
COPY --from=builder /var/run /var/run
RUN mkdir -p /tmp/test_nginx_root2
ADD cms/simple/* /tmp/test_nginx_root2/
# Expose default nginx port
EXPOSE 80
EXPOSE 443
EXPOSE 8081
# Create a non-root user to run nginx
RUN useradd -r -d /var/www nginx && \
chown -R nginx:nginx /etc/nginx /var/log/nginx /var/run
# Set entrypoint to run nginx
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]