Skip to content

Commit 7385a99

Browse files
committed
Install additional PHP versions
1 parent c7d9c24 commit 7385a99

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

docker-contributor/Dockerfile

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ ENV DEBIAN_FRONTEND=noninteractive \
1111
MYSQL_ROOT_PASSWORD=domjudge \
1212
FPM_MAX_CHILDREN=40 \
1313
DJ_SKIP_MAKE=0 \
14-
DJ_DB_INSTALL_BARE=0
14+
DJ_DB_INSTALL_BARE=0 \
15+
PHPSUPPORTED="7.2 7.3 8.0 8.1" \
16+
APTINSTALL="apt install -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold"
1517

1618
# Install required packages and clean up afterwards to make this image layer smaller
1719
RUN apt update \
@@ -32,7 +34,7 @@ RUN apt update \
3234
supervisor apache2-utils lsb-release \
3335
libcurl4-gnutls-dev libjsoncpp-dev libmagic-dev \
3436
enscript lpr ca-certificates less vim \
35-
php-pear php-dev \
37+
php-pear php-dev software-properties-common \
3638
&& pecl install pcov \
3739
&& rm -rf /var/lib/apt/lists/*
3840

@@ -56,6 +58,21 @@ RUN apt update && \
5658
&& php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php \
5759
&& mv /composer.phar /usr/local/bin/composer
5860

61+
# Install all supported PHP versions
62+
RUN add-apt-repository ppa:ondrej/php -y && apt update
63+
RUN for VERSION in $PHPSUPPORTED; do \
64+
$APTINSTALL php${VERSION}; \
65+
done
66+
RUN PACKAGES=$(dpkg-query -f '${binary:Package}\n' -W|grep "^php.*-"); \
67+
for PACKAGE in $PACKAGES; do \
68+
PACKAGEALLVERSIONS="" && \
69+
for VERSION in $PHPSUPPORTED; do \
70+
PACKAGEALLVERSIONS="$PACKAGEALLVERSIONS php${VERSION}-${PACKAGE#php*-}"; \
71+
done; \
72+
$APTINSTALL $PACKAGEALLVERSIONS; \
73+
done
74+
RUN update-alternatives --set php /usr/bin/php7.4
75+
5976
# Add exposed volume
6077
VOLUME ["/domjudge"]
6178

@@ -64,6 +81,11 @@ WORKDIR /domjudge
6481
# Add PHP configuration
6582
COPY ["php-config", "//etc/php/7.4/fpm/conf.d"]
6683
COPY ["php-config", "//etc/php/7.4/cli/conf.d"]
84+
RUN for VERSION in $PHPSUPPORTED; do \
85+
for DIR in fpm cli; do \
86+
cp /etc/php/7.4/$DIR/conf.d/* /etc/php/$VERSION/$DIR/conf.d/; \
87+
done; \
88+
done
6789

6890
# Disable Xdebug by default
6991
RUN phpdismod xdebug

docker-gitlabci/Dockerfile

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
FROM ubuntu:20.04
22
ENV DEBIAN_FRONTEND=noninteractive
3+
ENV PHPSUPPORTED="7.2 7.3 8.0 8.1"
4+
ENV APTINSTALL="apt install -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold"
35
RUN apt update && apt install -y \
46
acl make zip unzip apache2-utils bsdmainutils libcurl4-gnutls-dev \
57
libjsoncpp-dev libmagic-dev autoconf automake bats sudo debootstrap procps \
@@ -42,8 +44,21 @@ RUN apt update && \
4244
# Install needed global PHP modules
4345
RUN composer -n require justinrainbow/json-schema
4446

47+
# Install other PHP versions
48+
RUN add-apt-repository ppa:ondrej/php -y && apt update && \
49+
PACKAGES=$(dpkg-query -f '${binary:Package}\n' -W|grep "^php.*-") && \
50+
for VERSION in $PHPSUPPORTED; do \
51+
$APTINSTALL php${VERSION} && \
52+
for PACKAGE in $PACKAGES; do \
53+
$APTINSTALL php${VERSION}-${PACKAGE#php*-}; \
54+
done; \
55+
done && update-alternatives --set php /usr/bin/php7.4
56+
4557
# Enable pcov (code coverage) in PHP
4658
COPY php-config/30-pcov.ini /etc/php/7.4/cli/conf.d/
59+
RUN for version in $PHPSUPPORTED; do \
60+
cp /etc/php/7.4/cli/conf.d/30-pcov.ini /etc/php/${version}/cli/conf.d/; \
61+
done
4762

4863
# Put the gitlab user in sudo
4964
RUN echo 'ALL ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
@@ -55,4 +70,4 @@ RUN groupadd domjudge-run
5570

5671
# Do some extra setup
5772
RUN mkdir -p /run/php \
58-
&& rm /etc/php/7.4/fpm/pool.d/www.conf
73+
&& rm /etc/php/*/fpm/pool.d/www.conf

0 commit comments

Comments
 (0)