Hướng dẫn docker-php-ext-install gmp

I'm trying to spin up a laravel instance via lando using php8. I also need to install the php GMP module... I'm very new to docker and lando.

Now it seems as though the php instance that lando uses does not have GMP pre-setup

I found a post somewhere where someone installed some php modules via the lando file and tried to modify my file based on that.

This is my lando file at the moment:

name: og-tools
recipe: laravel
config:
  webroot: public
  composer_version: 2
  database: mariadb
  cache: redis
services:
  appserver:
    type: php:8.0
    via: apache
    build_as_root:
      - apt-get update -y
      - apt-get install php8.0-gmp
      - echo "extension=gmp.so" > /etc/php8/apache2/conf.d/gmp.ini
  mailhog:
    type: mailhog
    portforward: true
    hogfrom:
      - appserver

When I try running it I get the following:

E: Unable to locate package php8.0-gmp
E: Couldn't find any package by glob 'php8.0-gmp'
E: Couldn't find any package by regex 'php8.0-gmp'
ERROR ==> E: Couldn't find any package by regex 'php8.0-gmp' 

However looking up PHP8 GMP searches lead me to this site: https://websiteforstudents.com/how-to-migrate-to-php-8-0-on-ubuntu/

They mention the package php8.0-gmp however I don't seem to be able to find it.

I could just be doing this all completely wrong, I'm a little out of my depth for the time being and trying to learn as I go

I needed gmp too but when I installed it using laradock fpm that I modified, I kept getting an error saying gmp.h couldn't be found.

I added this to Dockerfile-70

#####################################
# GMP:
#####################################

ARG INSTALL_GMP=false
RUN if [ ${INSTALL_GMP} = true ]; then \
    # Install the gmp extension
    apt-get update && \
    apt-get -y install libgmp-dev && \ 
    docker-php-ext-install gmp \
;fi

and changed this FROM to
FROM laradock/php-fpm:7.1--1.3

This didn't work. So I added my own dockerfile to laradock fpm, it installs a lot of extensions and their required libraries. I don't know what my file added that was missing in the modified Dockerfile-70 but here is my custom dockerfile.

FROM php:fpm

RUN apt-get update && apt-get install -y \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
		libcurl4-gnutls-dev \
		libxml2-dev \
		libbz2-dev \
		re2c \
		libpng++-dev \
        libpng3 \
        libjpeg-dev \
        libvpx-dev \
        zlib1g-dev \
        libgd-dev \
        libssl-dev \
        libtidy-dev \
        libxslt1-dev \
        libmagic-dev \
        libexif-dev \
        file \
        libssh2-1-dev \
        git \
        wget	\
		sqlite3	\
		libsqlite3-dev \
		libgmp-dev \


	&& docker-php-ext-install json \
	&& docker-php-ext-install mbstring \
	&& docker-php-ext-install tokenizer \
    && docker-php-ext-install gmp \
    && docker-php-ext-install gd \
	&& docker-php-ext-install curl \
	&& docker-php-ext-install dom \
	&& docker-php-ext-install bz2 \
	&& docker-php-ext-install mysqli \
	&& docker-php-ext-install pcntl \
	&& docker-php-ext-install pdo \
	&& docker-php-ext-install pdo_mysql \
	&& docker-php-ext-install phar \
	&& docker-php-ext-install posix \
	&& docker-php-ext-install simplexml \
	&& docker-php-ext-install soap \
	&& docker-php-ext-install sockets \
	&& docker-php-ext-install tidy \
	&& docker-php-ext-install zip \
	&& docker-php-ext-install bcmath \
	&& docker-php-ext-install calendar \
	&& docker-php-ext-install ctype \
	&& docker-php-ext-install exif \
	&& docker-php-ext-install pcntl \
	&& docker-php-ext-install pdo_sqlite

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

FROM php:5.6-fpm
LABEL maintainer="Alterway <>"
RUN apt-get update && \
apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libgmp-dev \
libxml2-dev \
libxslt-dev \
zlib1g-dev \
libncurses5-dev \
libldap2-dev \
libicu-dev \
libmemcached-dev \
libcurl4-openssl-dev \
libssl-dev \
libsqlite3-dev \
exiftool \
curl \
ssmtp \
mysql-client \
git \
subversion \
wget && \
rm -rf /var/lib/apt/lists/* && \
wget https://getcomposer.org/download/1.8.5/composer.phar -O /usr/local/bin/composer && \
chmod a+rx /usr/local/bin/composer
RUN ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h && \
docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && \
docker-php-ext-install ldap && \
docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd && \
docker-php-ext-install pdo_mysql && \
docker-php-ext-configure mysql --with-mysql=mysqlnd && \
docker-php-ext-install mysql && \
docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \
docker-php-ext-install mysqli && \
docker-php-ext-install pdo_sqlite && \
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \
docker-php-ext-install gd && \
docker-php-ext-install soap && \
docker-php-ext-install intl && \
docker-php-ext-install mcrypt && \
docker-php-ext-install gmp && \
docker-php-ext-install bcmath && \
docker-php-ext-install mbstring && \
docker-php-ext-install exif && \
docker-php-ext-install zip && \
docker-php-ext-install pcntl && \
docker-php-ext-install ftp && \
docker-php-ext-install sockets && \
docker-php-ext-install xsl
RUN pecl install mongo && \
pecl install memcached-2.2.0 && \
pecl install redis-4.3.0 && \
pecl install xdebug-2.5.5
ADD http://www.zlib.net/zlib-1.2.11.tar.gz /tmp/zlib.tar.gz
RUN tar zxpf /tmp/zlib.tar.gz -C /tmp && \
cd /tmp/zlib-1.2.11 && \
./configure --prefix=/usr/local/zlib && \
make && make install && \
rm -Rf /tmp/zlib-1.2.11 && \
rm /tmp/zlib.tar.gz
ADD https://blackfire.io/api/v1/releases/probe/php/linux/amd64/56 /tmp/blackfire-probe.tar.gz
RUN tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp && \
mv /tmp/blackfire-*.so `php -r "echo ini_get('extension_dir');"`/blackfire.so && \
rm /tmp/blackfire-probe.tar.gz
ENV LOCALTIME Europe/Paris
ENV PHPFPM__access.format '"%R - %u [%t] \"%m %r\" %s %l %Q %f"'
RUN rm $PHP_INI_DIR/conf.d/docker-php-ext* && \
echo 'sendmail_path = /usr/sbin/ssmtp -t' >> $PHP_INI_DIR/conf.d/00-default.ini && \
echo "\ninclude=/usr/local/etc/php-fpm.d/*.conf" >> /usr/local/etc/php-fpm.conf && \
mkdir -p /usr/local/etc/php-fpm.d && \
chmod a+w -R $PHP_INI_DIR/conf.d/ /etc/ssmtp /usr/local/etc/php-fpm.d/
COPY docker-entrypoint.sh /entrypoint.sh
WORKDIR /var/www
ENTRYPOINT ["/entrypoint.sh"]
CMD ["php-fpm"]