sharex-php-uploader/Dockerfile

46 lines
1.4 KiB
Docker
Raw Normal View History

# Stage 1: Build Nginx
FROM alpine:3.18.4 as builder
2023-07-04 16:32:18 +01:00
# Install build dependencies and required tools
RUN apk update && apk upgrade && \
apk add --no-cache php81 php81-fpm php81-gd build-base pcre-dev openssl-dev zlib-dev linux-headers
# Download and build the latest version of Nginx from source
WORKDIR /tmp
RUN wget https://nginx.org/download/nginx-1.25.2.tar.gz
RUN tar -xzvf nginx-1.25.2.tar.gz
WORKDIR /tmp/nginx-1.25.2
2023-10-13 19:45:43 +01:00
RUN ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/sbin/nginx --conf-path=/etc/nginx/nginx.conf
RUN make
RUN make install
# 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
2023-10-13 19:54:21 +01:00
# Stage 2: Create a smaller production image
FROM alpine:3.18.4
# 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
COPY --from=builder /etc/nginx /etc/nginx
COPY --from=builder /etc/php81 /etc/php81
COPY --from=builder /tmp/upload.php /tmp/upload.php
COPY --from=builder /start.sh /start.sh
# Install runtime dependencies
RUN apk update && apk upgrade && \
apk add --no-cache php81 php81-fpm php81-gd
# Cleanup unnecessary files
RUN rm -rf /var/cache/apk/*
2023-07-04 16:46:10 +01:00
# Start server
2023-07-08 00:18:05 +01:00
CMD ["sh", "/start.sh"]