Docker PHP image per Symfony 6.x application

Ho scritto e testato questa immagine, tenendomi solo lo stretto necessario, eliminando quante più cose possibili ed utilizzando una versione alpine di php8.x
Chiaramente è solo un punto di partenza per applicazioni basate su Symfony 6.x.
FROM php:8.1.5-fpm-alpine
# Install other dependencies
RUN apk add --no-cache unzip \
libxml2-dev \
nano \
icu-dev \
bash \
util-linux \
g++ \
git \
zip \
libzip-dev
RUN apk add --no-cache libpq-dev;
RUN apk add --no-cache php8-dev;
RUN docker-php-ext-install \
pdo \
intl \
soap \
mysqli \
pdo_mysql \
opcache
RUN docker-php-ext-configure zip \
&& docker-php-ext-install zip
# set recommended PHP.ini settings
# see https://secure.php.net/manual/en/opcache.installation.php
RUN docker-php-ext-enable opcache; \
{ \
echo "opcache.preload=/var/www/html/config/preload.php"; \
echo "opcache.preload_user=www-data"; \
echo 'opcache.memory_consumption=256'; \
echo 'opcache.max_accelerated_files=20000'; \
echo 'opcache.validate_timestamps=0'; \
echo 'opcache.enable=1'; \
echo 'opcache.jit_buffer_size=100M'; \
echo 'opcache.jit=1255'; \
echo "realpath_cache_size=4096K"; \
echo "realpath_cache_ttl=600"; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini
RUN { \
echo "upload_max_filesize=128M;"; \
echo "post_max_size=256M;"; \
echo "memory_limit = 512M;"; \
echo "max_execution_time=300;"; \
echo "session.cookie_httponly=1"; \
echo "short_open_tag=Off"; \
} > /usr/local/etc/php/conf.d/uploads.ini
# install gd library
RUN apk add --update --no-cache freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev libwebp-dev
RUN docker-php-ext-configure gd \
--with-freetype \
--with-jpeg \
--with-webp \
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)
RUN docker-php-ext-install -j$(nproc) gd \
&& apk del --no-cache freetype-dev libpng-dev libjpeg-turbo-dev
# install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Install symfony-cli
RUN apk add --no-cache bash
RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.alpine.sh' | bash
RUN apk add symfony-cli
# post installation
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
WORKDIR /var/www/html
EXPOSE 9000
CMD ["php-fpm"]
Per buildare l’immagine eseguire il comando:
$ docker build -t symfony .
Successivamente eseguire immagine con il comando:
$ docker run --name symfony symfony
Unisciti alla discussione