Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve support for ARM chips like Mac M1 or M2 #248

Merged
merged 5 commits into from
Sep 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,34 @@ env:
- DOCKER_IMAGE=php/php53-debug
- DOCKER_IMAGE=php/php54
- DOCKER_IMAGE=php/php54-debug
- DOCKER_IMAGE=php/php54-cron
- DOCKER_IMAGE=php/php55
- DOCKER_IMAGE=php/php55-debug
- DOCKER_IMAGE=php/php55-cron
- DOCKER_IMAGE=php/php56
- DOCKER_IMAGE=php/php56-debug
- DOCKER_IMAGE=php/php56-cron
- DOCKER_IMAGE=php/php70
- DOCKER_IMAGE=php/php70-debug
- DOCKER_IMAGE=php/php70-cron
- DOCKER_IMAGE=php/php71
- DOCKER_IMAGE=php/php71-debug
- DOCKER_IMAGE=php/php71-cron
- DOCKER_IMAGE=php/php72
- DOCKER_IMAGE=php/php72-debug
- DOCKER_IMAGE=php/php72-cron
- DOCKER_IMAGE=php/php73
- DOCKER_IMAGE=php/php73-debug
- DOCKER_IMAGE=php/php73-cron
- DOCKER_IMAGE=php/php74
- DOCKER_IMAGE=php/php74-debug
- DOCKER_IMAGE=php/php74-cron
- DOCKER_IMAGE=php/php80
- DOCKER_IMAGE=php/php80-debug
- DOCKER_IMAGE=php/php80-cron
- DOCKER_IMAGE=php/php81
- DOCKER_IMAGE=php/php81-debug
- DOCKER_IMAGE=php/php81-cron

services:
- docker
Expand All @@ -32,7 +46,7 @@ install:
- docker build -t ${DOCKER_IMAGE/\//-} $DOCKER_IMAGE
- docker run --rm -d --name ${DOCKER_IMAGE/\//-} ${DOCKER_IMAGE/\//-}

before_script:
before_script: skip

script:
- docker ps | grep -q ${DOCKER_IMAGE/\//-}
Expand Down
4 changes: 2 additions & 2 deletions bin/helpers/php_container.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
$silent = !empty($argv[2]) && strpos($argv[2], 'silent') !== false;

// Gets the ID & Name of the latest PHP container that can be used for this Totara version
$php_container_ids = trim((string) shell_exec('docker ps -aqf "name=^totara_php" --format "{{.ID}}"'));
$php_container_ids = trim((string) shell_exec('docker ps -af "name=^totara_php" --format "{{.ID}}"'));
$php_container_ids = !empty($php_container_ids) ? preg_split('/\s+/',$php_container_ids) : array();
$php_container_names = trim((string) shell_exec('docker ps -aqf "name=^totara_php" --format "{{.Names}}"'));
$php_container_names = trim((string) shell_exec('docker ps -aaf "name=^totara_php" --format "{{.Names}}"'));
$php_container_names = !empty($php_container_names) ? preg_split('/\s+/', $php_container_names) : array();
$php_containers_running = array_combine($php_container_ids, $php_container_names);
asort($php_containers_running);
Expand Down
11 changes: 9 additions & 2 deletions bin/tdb
Original file line number Diff line number Diff line change
Expand Up @@ -385,9 +385,16 @@ elif [ "$db_type" == 'mariadb' ]; then
# Microsoft SQL Server #
##########################################
elif [ "$db_type" == 'mssql' ]; then
# Newer PHP versions have a newer mssql-tools version
if [[ "$php_container_name" == 'php-5.6' || "$php_container_name" == 'php-7.0' || "$php_container_name" == 'php-7.1' || "$php_container_name" == 'php-7.2' ]]; then
sqlcmd="/opt/mssql-tools/bin/sqlcmd"
else
sqlcmd="/opt/mssql-tools18/bin/sqlcmd -C"
fi

# Handles executing sql commands.
function db_sql_cmd() {
command_output=$(eval "$php_command /opt/mssql-tools/bin/sqlcmd -S $db_host -U $db_user -P \"$db_password\" -q \"$1\"")
command_output=$(eval "$php_command $sqlcmd -S $db_host -U $db_user -P \"$db_password\" -q \"$1\"")
error_msg=$(echo "$command_output" | grep 'Msg')
if [ -z "$2" ]; then
eval "$2"
Expand Down Expand Up @@ -426,7 +433,7 @@ elif [ "$db_type" == 'mssql' ]; then

# Start mssql shell
elif [ "$action" == 'shell' ]; then
docker exec -it "$db_container" /opt/mssql-tools/bin/sqlcmd -S "$db_host" -U "$db_user" -P "$db_password" -q "USE $db_name"
docker exec -it "$db_container" $sqlcmd -S "$db_host" -U "$db_user" -P "$db_password" -q "USE $db_name"

# Handle unimplemented action
else
Expand Down
4 changes: 4 additions & 0 deletions compose/mssql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ services:

mssql:
image: totara/docker-dev-mssql
# Mssql does not support multiple architectures
platform: linux/amd64
container_name: totara_mssql
ports:
- "1433:1433"
Expand All @@ -20,6 +22,8 @@ services:

mssql2019:
image: totara/docker-dev-mssql2019
# Mssql does not support multiple architectures
platform: linux/amd64
container_name: totara_mssql2019
ports:
- "1419:1433"
Expand Down
2 changes: 2 additions & 0 deletions compose/mysql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ services:
- totara

mysql:
# MySQL 5.7 does not support multiple architectures. (MySQL 8.0 works fine)
platform: linux/amd64
image: mysql:5.7
container_name: totara_mysql57
ports:
Expand Down
23 changes: 12 additions & 11 deletions php/php73/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM php:7.3-fpm-buster
FROM php:7.3-fpm-bullseye

ARG TIME_ZONE=Pacific/Auckland

Expand Down Expand Up @@ -30,7 +30,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
graphviz \
aspell \
libldap2-dev \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
libltdl-dev \
&& docker-php-ext-install -j$(nproc) xmlrpc \
zip \
intl \
Expand Down Expand Up @@ -83,27 +83,28 @@ 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/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& 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 \
msodbcsql17 \
mssql-tools \
unixodbc-dev \
&& rm -rf /var/lib/apt/lists/*
msodbcsql18 \
mssql-tools18 \
unixodbc-dev

RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile \
&& echo 'export PATH="$PATH:/opt/mssql-tools/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.9.0 \
&& pecl install pdo_sqlsrv-5.9.0
&& pecl install sqlsrv-5.9.0 pdo_sqlsrv-5.9.0 || \
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.9.0 pdo_sqlsrv-5.9.0

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

# Python 3.7 for ML Recommender.
RUN apt-get update && apt install -y python3.7 \
RUN apt-get update && apt install -y python3 \
python3-pip \
python3-wheel \
python3-venv \
Expand All @@ -124,4 +125,4 @@ RUN git clone https://github.com/zsh-users/zsh-completions ~/.oh-my-zsh/custom/p
RUN git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
RUN echo 'setopt +o nomatch' > ~/.zshrc
RUN echo 'source ~/custom_shell/.zshrc' >> ~/.zshrc
RUN cat ~/.bashrc >> ~/.zshrc
RUN cat ~/.bashrc >> ~/.zshrc
18 changes: 10 additions & 8 deletions php/php74/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM php:7.4-fpm-buster
FROM php:7.4-fpm-bullseye

ARG TIME_ZONE=Pacific/Auckland

Expand Down Expand Up @@ -28,7 +28,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
graphviz \
aspell \
libldap2-dev \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
libltdl-dev \
&& docker-php-ext-install -j$(nproc) xmlrpc \
zip \
intl \
Expand Down Expand Up @@ -78,26 +78,28 @@ 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/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& 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 \
msodbcsql17 \
mssql-tools \
msodbcsql18 \
mssql-tools18 \
unixodbc-dev

RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile \
&& echo 'export PATH="$PATH:/opt/mssql-tools/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.0 \
&& pecl install pdo_sqlsrv-5.10.0
&& 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

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

# Python 3.7 for ML Recommender.
RUN apt-get update && apt install -y python3.7 \
RUN apt-get update && apt install -y python3 \
python3-pip \
python3-wheel \
python3-venv \
Expand Down
21 changes: 12 additions & 9 deletions php/php80/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM php:8.0-fpm-buster
FROM php:8.0-fpm-bullseye

ARG TIME_ZONE=Pacific/Auckland

Expand Down Expand Up @@ -28,8 +28,9 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
graphviz \
aspell \
libldap2-dev \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
&& docker-php-ext-install -j$(nproc) zip \
libltdl-dev \
&& docker-php-ext-install -j$(nproc) \
zip \
intl \
soap \
opcache \
Expand Down Expand Up @@ -77,26 +78,28 @@ 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/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& 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 \
msodbcsql17 \
mssql-tools \
msodbcsql18 \
mssql-tools18 \
unixodbc-dev

RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile \
&& echo 'export PATH="$PATH:/opt/mssql-tools/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.0 \
&& pecl install pdo_sqlsrv-5.10.0
&& 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

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

# Python 3.7 for ML Recommender.
RUN apt-get update && apt install -y python3.7 \
RUN apt-get update && apt install -y python3 \
python3-pip \
python3-wheel \
python3-venv \
Expand Down
39 changes: 32 additions & 7 deletions php/php81/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM php:8.1-fpm-buster
FROM php:8.1-fpm-bullseye

ARG TIME_ZONE=Pacific/Auckland

Expand Down Expand Up @@ -27,7 +27,10 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
ghostscript \
graphviz \
aspell \
&& docker-php-ext-install -j$(nproc) zip \
libldap2-dev \
libltdl-dev \
&& docker-php-ext-install -j$(nproc) \
zip \
intl \
soap \
opcache \
Expand All @@ -36,6 +39,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
pgsql \
mysqli \
exif \
ldap \
&& docker-php-ext-configure gd \
--with-freetype \
--with-jpeg \
Expand All @@ -49,6 +53,18 @@ RUN git clone https://github.com/tideways/php-profiler-extension.git \

RUN echo "extension=tideways_xhprof.so" >> /usr/local/etc/php/conf.d/tideways_xhprof.ini

RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis

RUN pecl install -o -f igbinary \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable igbinary

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 && \
Expand All @@ -62,24 +78,33 @@ 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/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& 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 \
msodbcsql17 \
mssql-tools \
msodbcsql18 \
mssql-tools18 \
unixodbc-dev

RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile \
&& echo 'export PATH="$PATH:/opt/mssql-tools/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.0 \
&& pecl install pdo_sqlsrv-5.10.0
&& 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

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

# Python 3.7 for ML Recommender.
RUN apt-get update && apt install -y python3 \
python3-pip \
python3-wheel \
python3-venv \
python3-dev

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

Expand Down