Skip to content

Instantly share code, notes, and snippets.

@yaredc
Created July 27, 2022 20:52
Show Gist options
  • Save yaredc/8e88ac07ed44b1a2de4c362f073e07d1 to your computer and use it in GitHub Desktop.
Save yaredc/8e88ac07ed44b1a2de4c362f073e07d1 to your computer and use it in GitHub Desktop.
PHP81 + SVM + TENSOR
FROM library/php:8.1-fpm AS base
ENV TZ="Europe/Berlin" \
USER="worker" \
GROUP="worker" \
WORKDIR="/var/www/html" \
HOMEDIR="/var/www/.worker" \
DEV_LIBS="pkg-config libssl-dev libxslt1-dev libpq-dev libmemcached-dev libedit-dev \
libicu-dev libxml2-dev libldap2-dev libpng-dev libcurl4-openssl-dev \
libldb-dev libbz2-dev libmagickwand-dev libzip-dev libopenblas-dev \
liblapacke-dev libsvm-dev"
# https://docs.docker.com/engine/install/linux-postinstall/
# sudo groupadd docker
# sudo usermod -aG docker $USER
RUN useradd -u 1000 -U -M $USER && \
mkdir -p $WORKDIR &&\
mkdir -p $HOMEDIR &&\
chown -R $USER:$USER $WORKDIR &&\
chown -R $USER:$USER $HOMEDIR &&\
usermod -d $HOMEDIR $USER
RUN ln -snf "/usr/share/zoneinfo/$TZ" /etc/localtime &&\
echo "$TZ" > /etc/timezone
RUN apt update -y &&\
apt install -y --no-install-recommends ssh imagemagick \
libxslt1.1 msmtp memcached libmemcached-tools libmemcached11 git zip \
unzip libpng16-16 libzip4 default-mysql-client gfortran libopenblas-base \
liblapack3 libsvm3 $DEV_LIBS
RUN pecl channel-update pecl.php.net &&\
pecl install imagick memcached redis tensor svm-beta &&\
docker-php-ext-enable imagick memcached redis tensor svm &&\
ln -s /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3 /usr/lib/liblapacke.so.3
RUN docker-php-ext-install xsl xml curl ctype intl iconv session simplexml pdo \
pdo_mysql mysqli zip gd bz2
RUN docker-php-ext-enable xsl xml curl ctype intl iconv session simplexml pdo \
pdo_mysql mysqli zip gd bz2
ENV COMPOSER_HOME="$WORKDIR/app/.composer" COMPOSER_MEMORY_LIMIT="-1"
RUN curl --output /usr/local/bin/composer https://getcomposer.org/composer.phar &&\
chmod +x /usr/local/bin/composer
COPY .docker/php-fpm/etc/msmtprc /etc/msmtprc
COPY .docker/php-fpm/usr/local/etc/php/conf.d/zzz-common.ini /usr/local/etc/php/conf.d/zzz-common.ini
COPY .docker/php-fpm/usr/local/etc/php-fpm.d/zzz-common.conf /usr/local/etc/php-fpm.d/zzz-common.conf
WORKDIR $WORKDIR
################################################################
FROM base AS dev
RUN pecl install xdebug &&\
docker-php-ext-enable xdebug
RUN docker-php-source delete &&\
apt remove -y $DEV_LIBS &&\
apt autoclean -y &&\
apt clean -y &&\
apt autoremove -y &&\
rm -rf /var/lib/apt/lists/*
COPY .docker/php-fpm/usr/local/etc/php/conf.d/zzz-xdebug.ini /usr/local/etc/php/conf.d/zzz-xdebug.ini
COPY .docker/php-fpm/usr/local/etc/php-fpm.d/zzz-dev.conf /usr/local/etc/php-fpm.d/zzz-dev.conf
USER $USER
################################################################
FROM base AS prod
RUN docker-php-ext-install opcache &&\
docker-php-ext-enable opcache
RUN docker-php-source delete &&\
apt remove -y $DEV_LIBS &&\
apt autoclean -y &&\
apt clean -y &&\
apt autoremove -y &&\
rm -rf /var/lib/apt/lists/*
USER $USER
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment