Vai al contenuto

Docker PHP image per Symfony 6.x application

Scritto da:

Stefano Pascazi

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

Articolo successivo

Symfony 6.x, realizzare un'applicazione da zero

Unisciti alla discussione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.