From 61cd0a019575939c57ef34ad28e338e265ff9985 Mon Sep 17 00:00:00 2001 From: Fabian Derschatta Date: Tue, 5 Sep 2023 15:17:10 +1200 Subject: [PATCH] Convert PHP 8.0 and 8.1 images alpine based images --- php/php80/Dockerfile | 94 +++++++++++++++++++------------ php/php81/Dockerfile | 131 +++++++++++++++++++++++++------------------ 2 files changed, 135 insertions(+), 90 deletions(-) diff --git a/php/php80/Dockerfile b/php/php80/Dockerfile index 7765e52..dc29a32 100644 --- a/php/php80/Dockerfile +++ b/php/php80/Dockerfile @@ -1,37 +1,53 @@ FROM php:8.0-fpm-alpine +ARG TARGETARCH ARG TIME_ZONE=Pacific/Auckland RUN apk add --no-cache --update \ - freetype-dev \ - libjpeg-turbo-dev \ - libmcrypt-dev \ - libpng-dev \ - libxml2-dev \ - icu-dev \ - libpq-dev \ + linux-headers \ + aspell \ + autoconf \ + bash \ + bc \ + curl \ + icu \ + icu-data-full \ + freetds \ + freetype \ + ghostscript \ + git \ gnupg \ - nano \ - vim \ - wget \ - openssl \ + graphviz \ + libldap \ + libjpeg \ + libmcrypt \ + libmemcached \ + libpng \ + libpq \ musl \ musl-utils \ musl-locales \ + musl-locales-lang \ + nano \ + openssl \ tzdata \ - git \ - libzip-dev \ - libmemcached-dev \ + vim \ + wget \ zip \ - bc \ - ghostscript \ - graphviz \ - aspell \ - libldap \ + && apk add --no-cache --virtual build-dependencies \ + curl-dev \ + freetype-dev \ + freetds-dev \ + libjpeg-turbo-dev \ + libmcrypt-dev \ + libmemcached-dev \ + libpng-dev \ + libpq-dev \ + libxml2-dev \ + libzip-dev \ + icu-dev \ openldap-dev \ - bash \ - curl \ - autoconf \ + unixodbc-dev \ gcc \ make \ g++ \ @@ -45,6 +61,7 @@ RUN apk add --no-cache --update \ mysqli \ exif \ ldap \ + pdo_dblib \ && docker-php-ext-configure gd \ --with-freetype \ --with-jpeg \ @@ -74,26 +91,28 @@ ENV LANG en_US.UTF-8 ENV LANGUAGE en_US.UTF-8 ENV LC_ALL en_US.UTF-8 -# taken from: https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server -RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.2.1-1_amd64.apk -RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.apk +# Taken from https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server +RUN curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$TARGETARCH.apk && \ + curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$TARGETARCH.apk -RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.2.1-1_amd64.sig -RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.sig +#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg': +RUN curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$TARGETARCH.sig && \ + curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$TARGETARCH.sig -RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import - \ - && gpg --verify msodbcsql17_17.10.2.1-1_amd64.sig msodbcsql17_17.10.2.1-1_amd64.apk \ - && gpg --verify mssql-tools_17.10.1.1-1_amd64.sig mssql-tools_17.10.1.1-1_amd64.apk +RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import - && \ + gpg --verify msodbcsql18_18.3.1.1-1_$TARGETARCH.sig msodbcsql18_18.3.1.1-1_$TARGETARCH.apk && \ + gpg --verify mssql-tools18_18.3.1.1-1_$TARGETARCH.sig mssql-tools18_18.3.1.1-1_$TARGETARCH.apk -RUN apk add --allow-untrusted msodbcsql17_17.10.2.1-1_amd64.apk mssql-tools_17.10.1.1-1_amd64.apk -RUN apk add --no-cache --update unixodbc-dev +# Install the package(s) +RUN apk add --allow-untrusted msodbcsql18_18.3.1.1-1_$TARGETARCH.apk && \ + apk add --allow-untrusted mssql-tools18_18.3.1.1-1_$TARGETARCH.apk -RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile \ - && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc +RUN echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile \ + && echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc RUN pear config-set php_ini `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` system \ - && pecl install sqlsrv-5.10.1 \ - && pecl install pdo_sqlsrv-5.10.1 + && pecl install sqlsrv \ + && pecl install pdo_sqlsrv RUN docker-php-ext-enable sqlsrv.so && docker-php-ext-enable pdo_sqlsrv.so @@ -106,6 +125,9 @@ RUN apk add --no-cache --update python3 \ py3-virtualenv \ python3-dev +# Remove build dependencies +RUN apk del build-dependencies + COPY config/php.ini /usr/local/etc/php/ COPY config/fpm.conf /usr/local/etc/php-fpm.d/zz-totara.conf diff --git a/php/php81/Dockerfile b/php/php81/Dockerfile index 8a25a94..d2661ca 100644 --- a/php/php81/Dockerfile +++ b/php/php81/Dockerfile @@ -1,36 +1,57 @@ -FROM php:8.1-fpm-bullseye +FROM php:8.1-fpm-alpine +ARG TARGETARCH ARG TIME_ZONE=Pacific/Auckland -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ - apt-transport-https \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpng-dev \ - libxml2-dev \ - libicu-dev \ - libpq-dev \ - gnupg2 \ - nano \ - vim \ - wget \ - openssl \ - locales \ - tzdata \ - git \ - libzip-dev \ - libmemcached-dev \ - zip \ - netcat \ +RUN apk add --no-cache --update \ + linux-headers \ + aspell \ + autoconf \ + bash \ bc \ + curl \ + icu \ + icu-data-full \ + freetds \ + freetype \ ghostscript \ + git \ + gnupg \ graphviz \ - aspell \ - libldap2-dev \ - libltdl-dev \ - && docker-php-ext-install -j$(nproc) \ + libldap \ + libjpeg \ + libmcrypt \ + libmemcached \ + libpng \ + libpq \ + musl \ + musl-utils \ + musl-locales \ + musl-locales-lang \ + nano \ + openssl \ + tzdata \ + vim \ + wget \ zip \ + && apk add --no-cache --virtual build-dependencies \ + curl-dev \ + freetype-dev \ + freetds-dev \ + libjpeg-turbo-dev \ + libmcrypt-dev \ + libmemcached-dev \ + libpng-dev \ + libpq-dev \ + libxml2-dev \ + libzip-dev \ + icu-dev \ + openldap-dev \ + unixodbc-dev \ + gcc \ + make \ + g++ \ + && docker-php-ext-install -j$(nproc) zip \ intl \ soap \ opcache \ @@ -40,6 +61,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ mysqli \ exif \ ldap \ + pdo_dblib \ && docker-php-ext-configure gd \ --with-freetype \ --with-jpeg \ @@ -65,46 +87,47 @@ RUN pecl install -o -f memcached \ && rm -rf /tmp/pear \ && docker-php-ext-enable memcached -# we need en_US locales for MSSQL connection to work -# we need en_AU locales for behat to work -RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ - sed -i -e 's/# en_AU.UTF-8 UTF-8/en_AU.UTF-8 UTF-8/' /etc/locale.gen && \ - dpkg-reconfigure --frontend=noninteractive locales && \ - update-locale LANG=en_US.UTF-8 - ENV LANG en_US.UTF-8 ENV LANGUAGE en_US.UTF-8 ENV LC_ALL en_US.UTF-8 -# install mssql extension -RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ - && curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list \ - && apt-get update && ACCEPT_EULA=Y apt-get install -y \ - msodbcsql18 \ - mssql-tools18 \ - unixodbc-dev +# Taken from https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server +RUN curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$TARGETARCH.apk && \ + curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$TARGETARCH.apk -RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile \ - && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc +#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg': +RUN curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$TARGETARCH.sig && \ + curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$TARGETARCH.sig + +RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import - && \ + gpg --verify msodbcsql18_18.3.1.1-1_$TARGETARCH.sig msodbcsql18_18.3.1.1-1_$TARGETARCH.apk && \ + gpg --verify mssql-tools18_18.3.1.1-1_$TARGETARCH.sig mssql-tools18_18.3.1.1-1_$TARGETARCH.apk + +# Install the package(s) +RUN apk add --allow-untrusted msodbcsql18_18.3.1.1-1_$TARGETARCH.apk && \ + apk add --allow-untrusted mssql-tools18_18.3.1.1-1_$TARGETARCH.apk + +RUN echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile \ + && echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc -# Workaround applied: https://github.com/microsoft/msphpsql/issues/1438#issuecomment-1444773949 RUN pear config-set php_ini `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` system \ - && pecl install sqlsrv-5.10.1 pdo_sqlsrv-5.10.1 || \ - apt-get install -y --allow-downgrades odbcinst=2.3.7 odbcinst1debian2=2.3.7 unixodbc=2.3.7 unixodbc-dev=2.3.7 && \ - pecl install sqlsrv-5.10.1 pdo_sqlsrv-5.10.1 + && pecl install sqlsrv \ + && pecl install pdo_sqlsrv RUN docker-php-ext-enable sqlsrv.so && docker-php-ext-enable pdo_sqlsrv.so -RUN ln -fs /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \ - && dpkg-reconfigure --frontend noninteractive tzdata +RUN ln -fs /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime -# Python 3.7 for ML Recommender. -RUN apt-get update && apt install -y python3 \ - python3-pip \ - python3-wheel \ - python3-venv \ +# Python 3 for ML Recommender. +RUN apk add --no-cache --update python3 \ + py3-pip \ + py3-wheel \ + py3-virtualenv \ python3-dev +# Remove build dependencies +RUN apk del build-dependencies + COPY config/php.ini /usr/local/etc/php/ COPY config/fpm.conf /usr/local/etc/php-fpm.d/zz-totara.conf @@ -112,7 +135,7 @@ COPY config/fpm.conf /usr/local/etc/php-fpm.d/zz-totara.conf RUN echo 'for f in ~/custom_shell/*.sh; do [[ -e "$f" ]] && source "$f"; done;' >> ~/.bashrc # Have the option of using the oh my zsh shell. -RUN apt-get update && apt-get install -y zsh +RUN apk add --no-cache --update zsh RUN sh -c "$(curl https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" --unattended RUN git clone https://github.com/romkatv/powerlevel10k ~/.oh-my-zsh/custom/themes/powerlevel10k RUN git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions