22
33set -euo pipefail
44
5- readonly MYSQL_KEY_URL=' https://repo.mysql.com/RPM-GPG-KEY-mysql-2023'
65SCRIPT_LOCATION=" $( dirname " $( readlink -f " $0 " ) " ) "
76readonly SCRIPT_LOCATION
87
1413
1514cat << EOF > "${SCRIPT_LOCATION} /Dockerfile"
1615# Dockerfile generated by script
17- ARG php_version=8.3
16+ ARG php_version=8.4
1817
1918EOF
2019
@@ -41,26 +40,27 @@ WORKDIR /var/www
4140
4241SHELL [ "/bin/bash", "-o", "pipefail", "-c" ]
4342
44- # Creating keyring env and installing apt dependencies
45- RUN mkdir -p /etc/apt/keyrings && \\
46- apt-get update && \\
47- apt-get install -y --no-install-recommends gnupg2 wget lsb-release && \\
48- wget -qO - $MYSQL_KEY_URL | gpg --dearmor -o /etc/apt/keyrings/mysql.gpg && \\
49- # FIXME: use \$ (lsb_release -cs) when trixie becomes available on MySQL repos
50- echo "deb [signed-by=/etc/apt/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian/ bookworm mysql-8.0" | tee /etc/apt/sources.list.d/mysql.list && \\
51- apt-get update && \\
52- apt-get -y install --no-install-recommends libldap2 -dev \\
53- libicu-dev \\
54- libcap2-bin \\
55- libcurl4-gnutls-dev \\
56- libpng-dev \\
57- libzip-dev \\
58- supervisor \\
59- cron \\
60- ca-certificates \\
61- mysql-community-client && \\
62- apt-get -y remove gnupg2 wget lsb-release && \\
43+ # Install required packages, including MySQL client from Debian repos
44+ RUN apt-get update && \\
45+ apt-get install -y --no-install-recommends \\
46+ libldap2-dev \\
47+ libicu-dev \\
48+ libcap2-bin \\
49+ libcurl4-gnutls-dev \\
50+ libpng-dev \\
51+ libzip -dev \\
52+ supervisor \\
53+ cron \\
54+ ca-certificates \\
55+ rsyslog \\
56+ logrotate \\
57+ curl \\
58+ # This will install mariadb-client
59+ default-mysql-client && \\
60+ apt-get -y autoremove && \\
61+ apt-get -y purge && \\
6362 rm -rf /var/lib/apt/lists/*
63+
6464# Configure all PHP extensions
6565RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && \\
6666 docker-php-ext-install ldap \\
@@ -70,13 +70,17 @@ RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && \\
7070 zip \\
7171 gd \\
7272 intl
73+
7374# Setting up setcap for port mapping without root and removing packages
7475RUN setcap CAP_NET_BIND_SERVICE=+eip /usr/sbin/apache2 && \\
7576 chmod gu+s /usr/sbin/cron && \\
7677 apt-get -y remove libcap2-bin && \\
7778 apt-get -y autoremove && \\
7879 apt-get -y purge
7980
81+ RUN echo "0 0 * * * root /usr/sbin/logrotate /etc/logrotate.d/simplerisk.conf > /dev/null 2>&1" >> /etc/cron.d/logrotate-cron && \\
82+ chmod 0644 /etc/cron.d/logrotate-cron
83+
8084# Copying all files
8185COPY common/ /
8286EOF
@@ -121,12 +125,15 @@ RUN echo 'upload_max_filesize = 5M' >> /usr/local/etc/php/conf.d/docker-php-uplo
121125# Cleanup /var/www/, creating Simplerisk user on www-data group and setting up ownerships
122126RUN rm -rf /var/www/html && \\
123127 useradd -G www-data simplerisk && \\
124- chown -R simplerisk:www-data /var/www/simplerisk /etc/apache2 /var/run/ /var/log/apache2 && \\
125- chmod -R 770 /var/www/simplerisk /etc/apache2 /var/run/ /var/log/apache2 && \\
126- chmod 755 /entrypoint.sh /etc/apache2/foreground.sh
128+ mkdir -p /var/log/simplerisk && \\
129+ mkdir -p /var/log/supervisor && \\
130+ mkdir -p /var/run/supervisor && \\
131+ chmod -R 700 /etc/apache2 /var/log/simplerisk /var/run/ /var/www/simplerisk && \\
132+ chmod 755 /entrypoint.sh /etc/apache2/foreground.sh && \\
133+ chown -R simplerisk:www-data /etc/apache2 /var/log/apache2 /var/log/simplerisk /var/log/supervisor /var/run/ /var/www/simplerisk
127134
128135# Data to save
129- VOLUME [ "/var/log/apache2 ", "/etc/apache2/ssl", "/var/www/simplerisk" ]
136+ VOLUME [ "/var/log", "/etc/apache2/ssl", "/var/www/simplerisk" ]
130137
131138# Using simplerisk user from here
132139USER simplerisk
@@ -142,5 +149,5 @@ HEALTHCHECK --interval=1m \\
142149 CMD curl --fail http://localhost || exit 1
143150
144151# Start Apache
145- CMD ["/usr/sbin/apache2ctl ", "-D ", "FOREGROUND "]
152+ CMD ["/usr/bin/supervisord ", "-n ", "-c", "/etc/supervisor/supervisord.conf "]
146153EOF
0 commit comments