Best way to install php extensions, like intl un docker container

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • criffoh
    Member
    • Jun 2020
    • 60

    #1

    Best way to install php extensions, like intl un docker container

    I've installed the latest Espo in Ubuntu with docker, and I need install php-intl. What is the best way to do this?

    Could a custom Dockerfile be used for this?
  • jamie
    Senior Member
    • Aug 2025
    • 291

    #2
    yup dockerfile is the way todo this here is an example of my dockerfile

    Code:
    FROM php:8.4-apache
    # Copy Composer from the official Composer image
    COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
    # Install system dependencies
    RUN apt-get update && apt-get install -y --no-install-recommends \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libzip-dev \
    exif \
    unzip \
    git \
    libzmq3-dev \
    pkg-config \
    netcat-openbsd \
    cron \
    fonts-dejavu-core \
    fonts-dejavu-extra \
    libmagickwand-dev
    # PHP extensions
    RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd zip exif pdo pdo_mysql pcntl posix
    # Install Imagick
    RUN pecl install imagick \
    && docker-php-ext-enable imagick
    # ZMQ extension (with fallback manual build)
    RUN pecl install zmq || ( \
    git clone https://github.com/zeromq/php-zmq.git /tmp/php-zmq && \
    cd /tmp/php-zmq && phpize && ./configure && make && make install \
    ) && docker-php-ext-enable zmq
    # uncomment when in final production
    # RUN apt-get clean && rm -rf /var/lib/apt/lists/*
    RUN echo "* * * * * cd /var/www/html; /usr/local/bin/php -f cron.php > /dev/null 2>&1" | crontab -u www-data -
    RUN a2enmod rewrite
    WORKDIR /var/www/html
    COPY . /var/www/html/
    COPY docker/apache.cnf /etc/apache2/sites-available/espocrm.conf
    RUN a2dissite 000-default.conf \
    && a2ensite espocrm.conf
    COPY docker/apache-timeout.conf /etc/apache2/conf-available/timeout.conf
    RUN a2enconf timeout.conf
    RUN mkdir -p /var/www/html/data/cache/application/acl \
    && mkdir -p /var/www/html/data/cache/application/aclMap \
    && mkdir -p /var/www/html/data/logs
    RUN chown -R www-data:www-data /var/www/html \
    && chmod -R 755 /var/www/html
    RUN echo "memory_limit = 1024M" > /usr/local/etc/php/conf.d/memory-limit.ini

    Comment

    Working...