2024-09-28 12:17:45 +01:00
|
|
|
# Stage 1: Build Nginx
|
|
|
|
FROM alpine:3.20.3 AS builder
|
|
|
|
|
2024-09-28 11:10:12 +00:00
|
|
|
# Variables
|
2024-09-28 11:13:20 +00:00
|
|
|
ARG NGINX_VERSION="1.27.1"
|
|
|
|
ARG PHP_VERSION="8.3"
|
2024-09-28 11:10:12 +00:00
|
|
|
|
2023-10-13 19:38:54 +01:00
|
|
|
# Install build dependencies and required tools
|
|
|
|
RUN apk update && apk upgrade && \
|
2023-10-13 20:14:02 +01:00
|
|
|
apk add --no-cache build-base pcre-dev openssl-dev zlib-dev linux-headers
|
2023-10-13 19:38:54 +01:00
|
|
|
|
2024-09-28 11:10:12 +00:00
|
|
|
# Download and build Nginx from source
|
2023-10-13 19:38:54 +01:00
|
|
|
WORKDIR /tmp
|
2024-09-28 11:10:12 +00:00
|
|
|
RUN wget https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && \
|
|
|
|
tar -xzvf nginx-${NGINX_VERSION}.tar.gz && \
|
|
|
|
cd nginx-${NGINX_VERSION} && \
|
2024-02-26 17:52:32 +00:00
|
|
|
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/sbin/nginx --conf-path=/etc/nginx/nginx.conf && \
|
|
|
|
make > /dev/null 2>&1 && \
|
|
|
|
make install > /dev/null 2>&1 && \
|
|
|
|
make_status=$? && \
|
|
|
|
if [ $make_status -ne 0 ]; then echo "Nginx build failed"; exit $make_status; fi
|
2023-10-13 19:38:54 +01:00
|
|
|
|
|
|
|
# Cleanup unnecessary files
|
|
|
|
RUN rm -rf /tmp/*
|
2023-07-05 17:19:18 +01:00
|
|
|
|
2023-07-04 16:32:18 +01:00
|
|
|
# Set up nginx
|
2023-07-04 16:46:10 +01:00
|
|
|
COPY ./docker/nginx.conf /etc/nginx/nginx.conf
|
2023-07-04 16:32:18 +01:00
|
|
|
|
2023-07-04 16:46:10 +01:00
|
|
|
# Setup scripts
|
2023-07-04 16:51:11 +01:00
|
|
|
COPY ./upload.php /tmp/upload.php
|
2023-07-04 16:46:10 +01:00
|
|
|
COPY ./docker/start.sh /start.sh
|
2024-02-25 17:37:58 +00:00
|
|
|
COPY ./docker/index.html /tmp/index.html
|
2023-07-04 16:46:10 +01:00
|
|
|
|
2024-01-11 05:44:41 +00:00
|
|
|
# Copy public directory
|
|
|
|
COPY ./public /tmp/public
|
|
|
|
|
2023-10-13 19:54:21 +01:00
|
|
|
# Stage 2: Create a smaller production image
|
2024-09-28 18:13:30 +01:00
|
|
|
FROM alpine:3.20.1
|
2023-10-13 19:48:48 +01:00
|
|
|
|
|
|
|
# Copy Nginx and PHP-FPM binaries and configurations from the builder stage
|
|
|
|
COPY --from=builder /usr/local/nginx /usr/local/nginx
|
2023-10-13 20:08:41 +01:00
|
|
|
COPY --from=builder /usr/local/sbin/nginx /usr/local/sbin/nginx
|
2023-10-13 19:48:48 +01:00
|
|
|
COPY --from=builder /etc/nginx /etc/nginx
|
|
|
|
COPY --from=builder /tmp/upload.php /tmp/upload.php
|
2024-02-25 17:37:58 +00:00
|
|
|
COPY --from=builder /tmp/index.html /tmp/index.html
|
2023-10-13 19:48:48 +01:00
|
|
|
COPY --from=builder /start.sh /start.sh
|
2024-01-11 05:44:41 +00:00
|
|
|
COPY --from=builder /tmp/public /tmp/public
|
2023-10-13 19:48:48 +01:00
|
|
|
|
|
|
|
# Install runtime dependencies
|
|
|
|
RUN apk update && apk upgrade && \
|
2024-09-28 18:13:30 +01:00
|
|
|
apk add --no-cache php81 php81-fpm php81-gd pcre
|
2023-10-13 19:48:48 +01:00
|
|
|
|
|
|
|
# Cleanup unnecessary files
|
|
|
|
RUN rm -rf /var/cache/apk/*
|
|
|
|
|
2023-07-04 16:46:10 +01:00
|
|
|
# Start server
|
2024-09-28 12:17:45 +01:00
|
|
|
CMD ["sh", "/start.sh"]
|