PHP Classes

File: Dockerfile

Recommend this page to a friend!
  Packages of Matthew Asham   Binkterm PHP   Dockerfile   Download  
File: Dockerfile
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Binkterm PHP
Bulletin board system based on the Web
Author: By
Last change:
Date: 5 days ago
Size: 3,312 bytes
 

Contents

Class file image Download
# # BinktermPHP Dockerfile # # Multi-stage build for BinktermPHP with Apache, PHP, Node.js, and DOSBox-X support # FROM php:8.2-apache AS base ENV COMPOSER_ALLOW_SUPERUSER=1 ENV APACHE_DOCUMENT_ROOT=/var/www/html/public_html ENV DEBIAN_FRONTEND=noninteractive # Create binkterm user to mirror a normal installation. # www-data (Apache/PHP) is added to the binkterm group so it can read/write # data/ and config/ via group permissions, the same as a bare-metal install. RUN groupadd -r binkterm \ && useradd -r -g binkterm -d /var/www/html -s /bin/bash binkterm \ && usermod -aG binkterm www-data # Install Node.js 20 LTS repository RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ gnupg \ && mkdir -p /etc/apt/keyrings \ && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list # Install system dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ git \ libpq-dev \ libzip-dev \ nodejs \ p7zip-full \ postgresql-client \ supervisor \ unzip \ # DOSBox-X for DOS door support with headless operation dosbox-x \ && docker-php-ext-install -j"$(nproc)" pcntl posix pdo pdo_pgsql pgsql sockets zip \ && a2enmod rewrite \ && rm -rf /var/lib/apt/lists/* # Configure Apache document root RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf \ && sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf # Install Composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html # Copy composer files and install dependencies COPY composer.json composer.lock ./ RUN composer install --no-dev --no-interaction --prefer-dist --no-progress --optimize-autoloader # Copy application files COPY . . # Install Node.js dependencies for DOS door bridge RUN cd scripts/dosbox-bridge && npm install --production # Create necessary directories and set permissions. # Files are owned by binkterm (mirroring a normal install). # 775 on data/, config/, and dosbox-bridge/ gives www-data (binkterm group) write access. RUN mkdir -p \ data/run \ data/logs \ data/inbound \ data/outbound \ data/filebase \ config \ dosbox-bridge/dos/DROPS \ dosbox-bridge/dos/DOORS \ && chown -R binkterm:binkterm /var/www/html \ && chmod -R 775 data config dosbox-bridge \ && chmod +x scripts/*.php # Copy Docker configuration files COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh # Expose ports EXPOSE 80 EXPOSE 2323 EXPOSE 24554 EXPOSE 24555 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD curl -f http://localhost/ || exit 1 ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]