@@ -3,106 +3,87 @@ FROM php:8.3.9-alpine3.20
33LABEL maintainer="Kazem Mirzaei <
[email protected] >" \
44 description="PHP-FPM v8.3 with essential extensions on Alpine Linux."
55
6- ENV USER=www \
7- GROUP =www
8-
9- USER root
6+ # Use non-root user for production
7+ ARG USER =www
8+ ARG GROUP=www
9+ ENV USER=${USER} GROUP=${GROUP} TZ=UTC
1010
1111# Install runtime and build dependencies
1212RUN apk update && apk upgrade && apk add --no-cache \
1313 autoconf \
1414 automake \
1515 build-base \
16- c-client \
17- cmake \
1816 curl-dev \
19- fdk-aac-dev \
20- ffmpeg \
2117 freetype \
2218 freetype-dev \
23- g++ \
24- gcc \
2519 gettext \
2620 gettext-dev \
27- git \
2821 gmp \
2922 gmp-dev \
3023 icu-dev \
31- icu-libs \
3224 imap \
3325 imap-dev \
3426 imagemagick \
3527 imagemagick-dev \
36- krb5-dev \
37- libc-dev \
38- libintl \
39- libjpeg-turbo \
4028 libjpeg-turbo-dev \
41- libpng \
4229 libpng-dev \
43- libpq \
44- libtool \
4530 libwebp-dev \
46- libxml2-dev \
47- libxpm \
48- libxpm-dev \
49- libxslt \
5031 libxslt-dev \
51- libzip \
5232 libzip-dev \
53- make \
5433 mysql-client \
55- nasm \
5634 openssl-dev \
57- pcre-dev \
58- pkgconf \
5935 tzdata \
60- x264-dev \
61- zlib-dev
36+ zip \
37+ git \
38+ oniguruma-dev \
39+ krb5-dev \
40+ libtool
6241
6342# Configure and install PHP extensions
64- RUN ln -s /usr/lib/$(apk --print-arch)-linux-gnu/libXpm.* /usr/lib/ && \
65- docker-php-ext-configure gd --with-webp --with-jpeg --with-xpm --with-freetype --enable-gd-jis-conv && \
66- docker-php-ext-install -j$(nproc) gd gettext gmp bcmath exif intl pdo pdo_mysql pcntl zip
67-
68- RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
69- docker-php-ext-install -j$(nproc) imap
43+ RUN docker-php-ext-configure gd --with-webp --with-jpeg --with-freetype && \
44+ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
45+ docker-php-ext-install -j$(nproc) gd gettext gmp bcmath exif intl pdo_mysql pcntl zip imap
7046
47+ # Manually compile and install imagick
7148RUN git clone https://github.com/Imagick/imagick.git /usr/src/imagick && \
72- cd /usr/src/imagick && \
73- phpize && \
74- ./configure && \
75- make && \
76- make install && \
77- docker-php-ext-enable imagick
78-
79- RUN pecl install --force redis && docker-php-ext-enable redis
80-
81- RUN docker-php-ext-install ftp
82-
83-
84- # Compile and install FFmpeg with libfdk-aac support
85- RUN git clone --depth 1 https://git.ffmpeg.org/ffmpeg.git /ffmpeg && \
86- cd /ffmpeg && \
87- ./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 && \
49+ cd /usr/src/imagick && \
50+ phpize && \
51+ ./configure && \
8852 make -j$(nproc) && \
8953 make install && \
90- make clean && \
91- rm -rf /ffmpeg
54+ docker-php-ext-enable imagick && \
55+ rm -rf /usr/src/imagick
9256
93- # Remove build dependencies
94- RUN apk del --no-cache autoconf automake build-base g++ gcc libtool make pkgconf && \
95- rm -rf /var/cache/apk/* /tmp/* /var/tmp/*
57+ # Install Redis extension via PECL
58+ RUN pecl install redis && \
59+ docker-php-ext-enable redis
9660
9761# Install Composer
98- RUN wget -q -O - https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer | php -- --quiet && \
99- mv composer.phar /usr/local/bin/composer && \
100- addgroup -S composer && \
101- adduser -S composer -G composer && \
62+ RUN wget -q -O composer-setup.php https://getcomposer.org/installer && \
63+ php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
64+ rm composer-setup.php && \
10265 composer --version
10366
67+ # Remove unnecessary files to reduce image size
68+ RUN apk del --no-cache \
69+ autoconf \
70+ automake \
71+ build-base \
72+ libtool && \
73+ rm -rf /var/cache/apk/* /tmp/* /var/tmp/*
74+
75+ # Create a non-root user for security
76+ RUN addgroup -S ${GROUP} && adduser -S ${USER} -G ${GROUP} && \
77+ mkdir -p /var/www/html && \
78+ chown -R ${USER}:${GROUP} /var/www/html
79+
80+ WORKDIR /var/www/html
81+
10482# Expose PHP-FPM port
10583EXPOSE 9000
10684
85+ # Switch to non-root user
86+ USER ${USER}
87+
10788# Start PHP-FPM
108- CMD ["php-fpm"]
89+ CMD ["php-fpm"]
0 commit comments