@@ -11,7 +11,9 @@ ENV DEBIAN_FRONTEND=noninteractive \
11
11
MYSQL_ROOT_PASSWORD=domjudge \
12
12
FPM_MAX_CHILDREN=40 \
13
13
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"
15
17
16
18
# Install required packages and clean up afterwards to make this image layer smaller
17
19
RUN apt update \
@@ -32,7 +34,7 @@ RUN apt update \
32
34
supervisor apache2-utils lsb-release \
33
35
libcurl4-gnutls-dev libjsoncpp-dev libmagic-dev \
34
36
enscript lpr ca-certificates less vim \
35
- php-pear php-dev \
37
+ php-pear php-dev software-properties-common \
36
38
&& pecl install pcov \
37
39
&& rm -rf /var/lib/apt/lists/*
38
40
@@ -56,6 +58,21 @@ RUN apt update && \
56
58
&& php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php \
57
59
&& mv /composer.phar /usr/local/bin/composer
58
60
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
+
59
76
# Add exposed volume
60
77
VOLUME ["/domjudge" ]
61
78
@@ -64,6 +81,11 @@ WORKDIR /domjudge
64
81
# Add PHP configuration
65
82
COPY ["php-config" , "//etc/php/7.4/fpm/conf.d" ]
66
83
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
67
89
68
90
# Disable Xdebug by default
69
91
RUN phpdismod xdebug
0 commit comments