97 lines
2.6 KiB
Docker
97 lines
2.6 KiB
Docker
# 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;"]
|