mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
169 lines
5.2 KiB
Docker
169 lines
5.2 KiB
Docker
FROM composer as composer
|
|
|
|
FROM php:8.2-fpm-bullseye as php-base
|
|
|
|
RUN set -xe; \
|
|
apt-get update -yqq && \
|
|
pecl channel-update pecl.php.net && \
|
|
apt-get install -yqq \
|
|
apt-utils \
|
|
gnupg2 \
|
|
git
|
|
|
|
###########################################################################
|
|
# Zip:
|
|
###########################################################################
|
|
RUN apt-get install -yqq \
|
|
libzip-dev zip unzip && \
|
|
docker-php-ext-configure zip && \
|
|
# Install the zip extension
|
|
docker-php-ext-install zip && \
|
|
php -m | grep -q 'zip'
|
|
|
|
###########################################################################
|
|
# GD:
|
|
###########################################################################
|
|
RUN apt-get install -yqq libpng-dev && \
|
|
docker-php-ext-configure gd \
|
|
--prefix=/usr \
|
|
--with-jpeg \
|
|
--with-webp \
|
|
--with-xpm \
|
|
--with-freetype; \
|
|
docker-php-ext-install gd
|
|
|
|
###########################################################################
|
|
# EXIF:
|
|
###########################################################################
|
|
RUN docker-php-ext-install exif;
|
|
RUN docker-php-ext-enable exif;
|
|
|
|
###########################################################################
|
|
# Imagick:
|
|
###########################################################################
|
|
RUN apt-get install -y libmagickwand-dev; \
|
|
pecl install imagick; \
|
|
docker-php-ext-enable imagick;
|
|
|
|
###########################################################################
|
|
# PHP GETTEXT EXTENTION:
|
|
###########################################################################
|
|
RUN docker-php-ext-install gettext;
|
|
RUN docker-php-ext-enable gettext;
|
|
|
|
###########################################################################
|
|
# PHP GETTEXT EXTENTION:
|
|
###########################################################################
|
|
RUN docker-php-ext-install calendar && docker-php-ext-configure calendar
|
|
|
|
###########################################################################
|
|
# Human Language and Character Encoding Support:
|
|
###########################################################################
|
|
RUN apt-get install -yqq zlib1g-dev libicu-dev g++ && docker-php-ext-configure intl && docker-php-ext-install intl && docker-php-ext-enable intl
|
|
|
|
###########################################################################
|
|
# APCU:
|
|
###########################################################################
|
|
ARG INSTALL_APCU=false
|
|
RUN if [ ${INSTALL_APCU} = true]; then \
|
|
pecl install apcu \
|
|
&& docker-php-ext-enable apcu \
|
|
;fi
|
|
|
|
###########################################################################
|
|
# OPCACHE:
|
|
###########################################################################
|
|
ARG INSTALL_OPCACHE=false
|
|
RUN if [ ${INSTALL_OPCACHE} = true ]; then \
|
|
docker-php-ext-install opcache \
|
|
;fi
|
|
# Copy opcache configration
|
|
COPY ./conf.d/opcache.ini /usr/local/etc/php/conf.d/opcache.ini
|
|
|
|
###########################################################################
|
|
# PHP REDIS EXTENSION
|
|
###########################################################################
|
|
ARG INSTALL_PHPREDIS=false
|
|
RUN if [ ${INSTALL_PHPREDIS} = true ]; then \
|
|
pecl install -o -f redis \
|
|
&& rm -rf /tmp/pear \
|
|
&& docker-php-ext-enable redis \
|
|
;fi
|
|
|
|
############################################################################
|
|
# Xdebug
|
|
# NOTE: Please do not install xdebug and PCOV at the same time
|
|
############################################################################
|
|
ARG INSTALL_XDEBUG=false
|
|
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
|
pecl install -o -f xdebug \
|
|
;fi
|
|
|
|
# Copy xdebug configration
|
|
COPY ./conf.d/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
|
|
|
###########################################################################
|
|
# MySQL
|
|
###########################################################################
|
|
ARG INSTALL_MYSQL=false
|
|
RUN if [ ${INSTALL_MYSQL} = true ]; then \
|
|
docker-php-ext-install pdo_mysql \
|
|
;fi
|
|
|
|
###########################################################################
|
|
# RABBITMQ:
|
|
###########################################################################
|
|
ARG INSTALL_AMQP=false
|
|
RUN if [ ${INSTALL_AMQP} = true ]; then \
|
|
docker-php-ext-install sockets \
|
|
&& apt-get install -yqq librabbitmq-dev \
|
|
&& pecl install amqp-1.11.0 \
|
|
&& docker-php-ext-enable amqp \
|
|
&& php -m | grep -oiE '^amqp$' \
|
|
;fi
|
|
|
|
ARG INSTALL_YAML=false
|
|
RUN if [ ${INSTALL_YAML} = true ]; then \
|
|
apt-get install -yqq libyaml-dev \
|
|
&& pecl install yaml \
|
|
&& docker-php-ext-enable yaml \
|
|
;fi
|
|
|
|
COPY ./conf.d/core.ini /usr/local/etc/php/conf.d/core.ini
|
|
|
|
# Configure non-root user.
|
|
ARG PUID=1000
|
|
ENV PUID ${PUID}
|
|
ARG PGID=1000
|
|
ENV PGID ${PGID}
|
|
|
|
RUN groupmod -o -g ${PGID} www-data && \
|
|
usermod -o -u ${PUID} -g www-data www-data
|
|
|
|
WORKDIR /var/www
|
|
|
|
FROM php-base AS php-fpm
|
|
|
|
USER www-data
|
|
|
|
EXPOSE 9000
|
|
|
|
CMD ["php-fpm"]
|
|
|
|
FROM php-base AS php-cli
|
|
|
|
COPY --from=composer /usr/bin/composer /usr/bin/composer
|
|
|
|
###########################################################################
|
|
# PCOV
|
|
###########################################################################
|
|
ARG INSTALL_PCOV=false
|
|
RUN if [ ${INSTALL_PCOV} = true ]; then \
|
|
pecl install pcov \
|
|
&& docker-php-ext-enable pcov \
|
|
;fi
|
|
|
|
USER www-data
|
|
|
|
CMD ["php-fpm"]
|