FROM debian:bullseye-slim RUN apt-get update \ && apt-get install -y apache2 perl build-essential \ libdbi-perl \ libdbd-sqlite3-perl \ libjson-perl \ libimage-size-perl \ libanyevent-perl \ libio-all-lwp-perl \ libfcgi-perl \ libgeography-countries-perl \ libapache2-mod-fcgid \ && cpan TUWF \ && cpan "LWP::Simple" \ && apt-get autoclean RUN a2enmod rewrite fcgid proxy_fcgi cgi COPY . /masterserver # Create Apache VirtualHost configuration on custom listen port RUN echo 'Listen 8080\n\ \n\ DocumentRoot "/masterserver/s"\n\ AddHandler cgi-script .pl\n\ \ RewriteEngine On\n\ RewriteCond "%{DOCUMENT_ROOT}/%{REQUEST_URI}" !-s\n\ RewriteRule ^/ /masterinterface.pl\n\ \ ErrorLog /masterserver/log/error.log\n\ CustomLog /masterserver/log/access.log combined\n\ \ \n\ Options +FollowSymLinks +ExecCGI\n\ AllowOverride None\n\ Require all granted\n\ \n\ ' > /etc/apache2/sites-available/000-default.conf # Create FastFGI configuration which works with our stand-alone Apache instance RUN echo '\n\ FcgidIPCDir /run/mod_fcgid\n\ FcgidProcessTableFile /run/mod_fcgid/fcgid_shm\n\ FcgidMinProcessesPerClass 0\n\ FcgidMaxProcessesPerClass 8\n\ FcgidMaxProcesses 100\n\ FcgidConnectTimeout 20\n\ FcgidIdleTimeout 60\n\ FcgidProcessLifeTime 120\n\ FcgidIdleScanInterval 10\n\ \ \n\ AddHandler fcgid-script .fcgi\n\ \n\ ' > /etc/apache2/mods-enabled/fcgid.conf # Create a script which runns the IP to Country lookup in the background, and runs Apache in the foreground RUN echo '#!/bin/sh\n\ if [ ! $NO_IP_TO_COUNTRY ]; then\n\ echo "Running IP to Country lookup"\n\ cd /masterserver/util && ./listcountry.pl > /masterserver/log/listcountry.log &\n\ else\n\ echo "Not using IP to Country lookup"\n\ fi\n\ cd /masterserver && apache2 -DFOREGROUND' > /masterserver/launch.sh RUN mkdir -p /run/mod_fcgid \ && chown -R daemon:daemon /run/mod_fcgid /masterserver \ && chmod +x /masterserver/launch.sh USER daemon # Supply variables expected by Debian's Apache distribution ENV APACHE_RUN_USER=daemon\ APACHE_RUN_GROUP=daemon\ APACHE_RUN_DIR=/masterserver\ APACHE_PID_FILE=/masterserver/apache2.pid\ APACHE_LOG_DIR=/masterserver/log\ NO_IP_TO_COUNTRY="" CMD ["/masterserver/launch.sh"]