Skip to content

Commit

Permalink
Convert PHP 8.0 and 8.1 images alpine based images
Browse files Browse the repository at this point in the history
  • Loading branch information
Fabian Derschatta committed Sep 5, 2023
1 parent 24594e5 commit 61cd0a0
Show file tree
Hide file tree
Showing 2 changed files with 135 additions and 90 deletions.
94 changes: 58 additions & 36 deletions php/php80/Dockerfile
Original file line number Diff line number Diff line change
@@ -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++ \
Expand All @@ -45,6 +61,7 @@ RUN apk add --no-cache --update \
mysqli \
exif \
ldap \
pdo_dblib \
&& docker-php-ext-configure gd \
--with-freetype \
--with-jpeg \
Expand Down Expand Up @@ -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

Expand All @@ -106,6 +125,9 @@ RUN apk add --no-cache --update python3 \
py3-virtualenv \
python3-dev

# Remove build dependencies
RUN apk del build-dependencies

This comment has been minimized.

Copy link
@NingZhou-NZ

NingZhou-NZ Sep 5, 2023

You have to implement this in the same RUN when you defined the virtual build-dependencies. That was the reason I link whole lots of commands by && \ in my last comment.

This comment has been minimized.

Copy link
@derschatta

derschatta Sep 5, 2023

Member

in your comment this was also a separate line. I also found out that it needs to be part of the RUN. Just about to add another commit ;)

This comment has been minimized.

Copy link
@derschatta

derschatta Sep 5, 2023

Member

not a fan of chaining everything so there'll be some repetition in my patch but I think it's a bit cleaner.

This comment has been minimized.

Copy link
@derschatta

derschatta Sep 5, 2023

Member

also please comment on the pr not on individual commits, they are super hard to find and don't show up in the conversation view


COPY config/php.ini /usr/local/etc/php/
COPY config/fpm.conf /usr/local/etc/php-fpm.d/zz-totara.conf

Expand Down
131 changes: 77 additions & 54 deletions php/php81/Dockerfile
Original file line number Diff line number Diff line change
@@ -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 \
Expand All @@ -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 \
Expand All @@ -65,54 +87,55 @@ 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

# Source each .sh file found in the /shell/ folder
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
Expand Down

0 comments on commit 61cd0a0

Please sign in to comment.