Skip to content

Commit 07bf4a9

Browse files
committed
optimize image
1 parent d660925 commit 07bf4a9

File tree

1 file changed

+43
-62
lines changed

1 file changed

+43
-62
lines changed

fpm-alpine/8.3/dockerfile

Lines changed: 43 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -3,106 +3,87 @@ FROM php:8.3.9-alpine3.20
33
LABEL 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
1212
RUN 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
7148
RUN 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
10583
EXPOSE 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

Comments
 (0)