1+ FROM php:8.3.9-alpine3.20
2+
3+ # Set the maintainer label
4+ LABEL Maintainer="Kazem Mirzaei <
[email protected] >"
5+ LABEL Description="PHP-FPM v8.2 with essential extensions on top of Alpine Linux."
6+
7+ # Set environment variables for the user and group
8+ ENV USER www
9+ ENV GROUP www
10+
11+ # Switch to root user to perform system updates and installations
12+ USER root
13+
14+
15+ #############################################
16+ ### Install and enable PHP extensions
17+ #############################################
18+
19+ # Install system dependencies
20+ RUN set -ex \
21+ && apk add --update --no-cache \
22+ c-client \
23+ freetype \
24+ ffmpeg \
25+ gettext \
26+ gmp \
27+ icu-libs \
28+ imagemagick \
29+ imap \
30+ libintl \
31+ libjpeg-turbo \
32+ libpng \
33+ libpq \
34+ libtool \
35+ libxpm \
36+ libxslt \
37+ libzip \
38+ make \
39+ mysql-client \
40+ tzdata
41+
42+ # Development dependencies
43+ RUN set -ex \
44+ && apk add --update --no-cache \
45+ autoconf \
46+ curl-dev \
47+ freetype-dev \
48+ g++ \
49+ gcc \
50+ gettext-dev \
51+ git \
52+ gmp-dev \
53+ icu-dev \
54+ imagemagick-dev \
55+ imap-dev \
56+ krb5-dev \
57+ libc-dev \
58+ libjpeg-turbo-dev \
59+ libpng-dev \
60+ libwebp-dev \
61+ libxml2-dev \
62+ libxpm-dev \
63+ libxslt-dev \
64+ libzip-dev \
65+ pcre-dev \
66+ pkgconf \
67+ zlib-dev \
68+ \
69+ ################################
70+ # Install PHP extensions
71+ ################################
72+ \
73+ # Install gd
74+ && ln -s /usr/lib/$(apk --print-arch)-linux-gnu/libXpm.* /usr/lib/ \
75+ && docker-php-ext-configure gd \
76+ --enable-gd \
77+ --with-webp \
78+ --with-jpeg \
79+ --with-xpm \
80+ --with-freetype \
81+ --enable-gd-jis-conv \
82+ && docker-php-ext-install -j$(nproc) gd \
83+ && true \
84+ \
85+ # Install gettext
86+ && docker-php-ext-install -j$(nproc) gettext \
87+ && true \
88+ \
89+ # Install gmp
90+ && docker-php-ext-install -j$(nproc) gmp \
91+ && true \
92+ \
93+ # Install bcmath
94+ && docker-php-ext-install -j$(nproc) bcmath \
95+ && true \
96+ \
97+ # Install exif
98+ && docker-php-ext-install -j$(nproc) exif \
99+ && true \
100+ \
101+ # Install imap
102+ && docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
103+ && docker-php-ext-install -j$(nproc) imap \
104+ && true \
105+ \
106+ # Install imagick
107+ && pecl install imagick \
108+ && docker-php-ext-enable imagick \
109+ && true \
110+ \
111+ # Install intl
112+ && docker-php-ext-install -j$(nproc) intl \
113+ && true \
114+ \
115+ # Install pdo_mysql
116+ && docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
117+ && docker-php-ext-install -j$(nproc) pdo pdo_mysql \
118+ && true \
119+ \
120+ # Install pcntl
121+ && docker-php-ext-install -j$(nproc) pcntl \
122+ && true \
123+ \
124+ # Install redis
125+ && pecl install --force redis \
126+ && docker-php-ext-enable redis \
127+ && true \
128+ \
129+ # Install zip
130+ && docker-php-ext-configure zip --with-zip \
131+ && docker-php-ext-install -j$(nproc) zip \
132+ && true \
133+ \
134+ # Clean up build packages
135+ && docker-php-source delete \
136+ && rm -fr /tmp/pear \
137+ && rm -rf /var/cache/apk/* \
138+ && true
139+
140+ # Install Composer
141+ RUN wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet \
142+ && mv composer.phar /usr/local/bin/composer \
143+ && addgroup -S composer \
144+ && adduser -S composer -G composer \
145+ && composer --version \
146+ && true
147+
148+
149+ # Start PHP-FPM
150+ EXPOSE 9000
151+ CMD ["php-fpm"]
0 commit comments