sharex-php-uploader/Dockerfile

60 lines
1.8 KiB
Docker
Raw Normal View History

2024-09-28 11:10:12 +00:00
# Variables
ARG NGINX_VERSION=1.27.1
ARG PHP_VERSION=8.3
# Stage 1: Build Nginx
2024-09-28 11:11:54 +00:00
FROM alpine:3.20.3 AS builder
2023-07-04 15:32:18 +00:00
# Install build dependencies and required tools
RUN apk update && apk upgrade && \
2023-10-13 19:14:02 +00:00
apk add --no-cache build-base pcre-dev openssl-dev zlib-dev linux-headers
2024-09-28 11:10:12 +00:00
# Download and build Nginx from source
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
# Cleanup unnecessary files
RUN rm -rf /tmp/*
2023-07-05 16:19:18 +00:00
2023-07-04 15:32:18 +00:00
# Set up nginx
2023-07-04 15:46:10 +00:00
COPY ./docker/nginx.conf /etc/nginx/nginx.conf
2023-07-04 15:32:18 +00:00
2023-07-04 15:46:10 +00:00
# Setup scripts
2023-07-04 15:51:11 +00:00
COPY ./upload.php /tmp/upload.php
2023-07-04 15:46:10 +00: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 15:46:10 +00:00
2024-01-11 05:44:41 +00:00
# Copy public directory
COPY ./public /tmp/public
2023-10-13 18:54:21 +00:00
# Stage 2: Create a smaller production image
FROM alpine:3.20.3
# Copy Nginx and PHP-FPM binaries and configurations from the builder stage
COPY --from=builder /usr/local/nginx /usr/local/nginx
2023-10-13 19:08:41 +00:00
COPY --from=builder /usr/local/sbin/nginx /usr/local/sbin/nginx
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
COPY --from=builder /start.sh /start.sh
2024-01-11 05:44:41 +00:00
COPY --from=builder /tmp/public /tmp/public
# Install runtime dependencies
RUN apk update && apk upgrade && \
2024-09-28 11:10:12 +00:00
apk add --no-cache php${PHP_VERSION} php${PHP_VERSION}-fpm php${PHP_VERSION}-gd pcre
# Cleanup unnecessary files
RUN rm -rf /var/cache/apk/*
2024-09-28 11:10:12 +00:00
# Ensure signals are passed through
STOPSIGNAL SIGTERM
2023-07-04 15:46:10 +00:00
# Start server
2023-07-07 23:18:05 +00:00
CMD ["sh", "/start.sh"]